Ios UIPopoverController:在视图被解除后更新视图
在iPad模拟器上,我有一个ViewController a,它显示一个UIPopoverController,其内容ViewController是ViewController B,在它里面我有一个按钮来关闭UIPopoverController 当它被解除时,我需要根据ViewController B中的某个字段更新ViewController A的视图 为了做到这一点,我将ViewController A声明为ViewController B的属性(weakref),以便在ViewController B中,如果它取消popover,我可以说:Ios UIPopoverController:在视图被解除后更新视图,ios,objective-c,uipopovercontroller,Ios,Objective C,Uipopovercontroller,在iPad模拟器上,我有一个ViewController a,它显示一个UIPopoverController,其内容ViewController是ViewController B,在它里面我有一个按钮来关闭UIPopoverController 当它被解除时,我需要根据ViewController B中的某个字段更新ViewController A的视图 为了做到这一点,我将ViewController A声明为ViewController B的属性(weakref),以便在ViewContr
[self.viewControllerA.popover dismissPopoverAnimated:YES];
self.viewControllerA.popover = nil;
self.viewControllerA.textLabel.text = self.someField
这是正确的做法吗?因为当我们务实地抛弃popover时没有回调,所以我想不出任何更好的解决方案
有人有更好的主意吗?传递视图控制器对我来说似乎很尴尬。我认为,委托或发送通知会更好 注意: 更改执行顺序将使当前代码更加完善
self.viewControllerA.textLabel.text = self.someField
[self.viewControllerA.popover dismissPopoverAnimated:YES];
self.viewControllerA.popover = nil;
最好的方法是使用
委托
,只需在控制器B中声明委托即可
@protocol ControllerSDelegate <NSObject>
-(void) hidePopoverDelegateMethod;
@end
及
在控制器A中,您可以处理此委托调用
-(void) hidePopoverDelegateMethod {
[self.paymentPopover dismissPopoverAnimated:YES];
if (self.paymentPopover) {
self.paymentPopover = nil;
}
[self initializeData];
}
我更喜欢委托而不是通知,因为应该只通知一个对象。直接调用-dismissPopoverAnimated:时不调用此函数。
-(void) hidePopoverDelegateMethod {
[self.paymentPopover dismissPopoverAnimated:YES];
if (self.paymentPopover) {
self.paymentPopover = nil;
}
[self initializeData];
}