我有使用android的经验但在ios上真的很新。在Android上,我可以使用startActivityForResult()从屏幕A导航到屏幕B.然后,当B关闭时,系统将通过回调方法通知屏幕A做某事(例如获取返回的值,刷新数据,。 ..)
我想在这里问的是:有没有办法注册一个在屏幕B关闭时将被呼叫的回叫功能?如何将数据从屏幕B返回到屏幕A?
我知道我可以声明一个公共属性然后从屏幕B设置它。但是,我认为这种方式可能会使我的源代码变得复杂且安全性降低。 (即我不想将财产打开到其他屏幕进行评估)。
感谢。
答案 0 :(得分:0)
您可以使用委托模式。
(看看UITextField,UITableView等......他们都使用这种模式。)
您在第二个视图上设置了一个委托属性,名为......
SecondViewDelegate
在协议中你给它一个类似......的方法。
- (void)secondViewDidSelectValue:(NSString*)selectedValue;
然后在第一个视图中,您将其作为第二个视图的委托。
这种模式有很多资源。
答案 1 :(得分:0)
是的,有更好的方法可以做到这一点。它被称为授权。在视图控制器中,您正在解雇您创建@protocol
和@property (nonatomic, weak) id <ProtocolName> delegate;
。您可以从上一个View Controller设置此值:secondVC.delegate = self
。它就像一个Java接口。然后,当您的第二个视图控制器消失时,您可以调用委托方法(例如,在viewWillDisappear:
中)。
希望这是有道理的!