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