UIPopoverController:解除后更新视图

时间:2014-01-21 06:55:44

标签: ios objective-c uipopovercontroller

在iPad模拟器上,我有一个ViewController A,它提供了一个UIPopoverController,其contentViewController是ViewController B,我在其中有一个关闭UIPopoverController的按钮。

当它被解雇时,我需要根据ViewController B中的某个字段更新ViewController A的视图。

为了做到这一点,我将ViewController A声明为ViewController B的属性( weakref ),以便在ViewController B中解除弹出窗口,我可以说:

[self.viewControllerA.popover dismissPopoverAnimated:YES];
self.viewControllerA.popover = nil;
self.viewControllerA.textLabel.text = self.someField

这是正确的做法吗?由于当我们务实地解雇popover时没有回调,我想不出任何更好的解决方案。

有人有更好的主意吗?传递视图控制器对我来说似乎很尴尬。

2 个答案:

答案 0 :(得分:0)

我认为,代表或发送NSNotification会更好。

注意:

更改执行顺序将使您当前的代码更加完美。

self.viewControllerA.textLabel.text = self.someField
[self.viewControllerA.popover dismissPopoverAnimated:YES];
self.viewControllerA.popover = nil;

答案 1 :(得分:0)

最好的方法是使用Delegation,只需在控制器B中声明委托

@protocol ControllerSDelegate <NSObject>
-(void) hidePopoverDelegateMethod;
@end

并调用此操作来传递数据和解除控制器,如

if (_delegate != nil) {
    [_delegate hidePopoverDelegateMethod];
}

在您的控制器A中,您可以处理此委托调用

-(void) hidePopoverDelegateMethod {
    [self.paymentPopover dismissPopoverAnimated:YES];
    if (self.paymentPopover) {
        self.paymentPopover = nil;
    }
    [self initializeData];
}