0

我有 android 的经验,但在 ios 上真的很新。在 Android 上,我可以使用 startActivityForResult() 从屏幕 A 导航到屏幕 B。然后,当 B 关闭时,系统会通过回调方法通知屏幕 A 执行某些操作(例如获取返回值、刷新数据、。 ..)

我想在这里问的是:有没有办法注册一个回调函数,当屏幕B关闭时会调用它?如何将屏幕B的数据返回到屏幕A?

我知道我可以声明一个公共属性,然后从屏幕 B 为其设置值。但是,我认为这种方式可能会使我的源代码复杂且安全性降低。(即我不想将财产打开到其他屏幕进行评估)。

谢谢。

4

2 回答 2

0

是的,有更好的方法来做到这一点。这称为委托。在视图控制器中,您正在解雇您创建一个@protocol和一个@property (nonatomic, weak) id <ProtocolName> delegate;. 您从之前的 View Controller: 中设置此值secondVC.delegate = self。它就像一个Java接口。然后,当您的第二个 View Controller 消失时,您调用委托方法(例如 in viewWillDisappear:)。

希望这是有道理的!

于 2012-12-18T08:30:25.577 回答
0

您可以为此使用委托模式。

(看看 UITextField、UITableView 等......他们都使用这种模式)。

您在第二个视图上设置了一个委托属性,称为...

SecondViewDelegate

在协议中你给它一个方法,比如......

- (void)secondViewDidSelectValue:(NSString*)selectedValue;

然后在第一个视图中,将其设置为第二个视图的代表。

有很多关于这种模式的资源。

于 2012-12-18T08:28:37.780 回答