繁体   English   中英

UIPopoverController:关闭后更新视图

[英]UIPopoverController: update view after it is dismissed

在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

这是正确的做法吗? 由于当我们实用地关闭弹出窗口时没有回调,因此我想不出更好的解决方案。

有人有更好的主意吗? 在我周围传递视图控制器只是让我感到尴尬。

我认为,委托或发送NSNotification会更好。

注意:

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

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

最好的方法是使用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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM