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



我有使用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: 中)。

希望这是有道理的!

最新更新