如何在ios上将屏幕上的值返回到上一个屏幕?

时间:2012-12-18 08:23:25

标签: objective-c ios return-value

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

我想在这里问的是:有没有办法注册一个在屏幕B关闭时将被呼叫的回叫功能?如何将数据从屏幕B返回到屏幕A?

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

感谢。

2 个答案:

答案 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:中)。

希望这是有道理的!