将数据从UIViewController传递给UIViewController

所以我有这个UINavigationController,我正在第一个移动到下一个视图,比我想点击“后退”button,并返回到第一个视图与数据,我保存到第二个视图上的“strAddress” 。 我想在“lblShowStr.text”的第一个视图上显示数据。

我怎么能做到这一点? 我搜查了所有的网页,发现有些人写了,但不明白他们在那里被告知了什么。

谢谢!

在你的第一个视图控制器中,你可能有一个叫做strAddress的NSString属性。 并且每次出现视图时都将该string放入lblShowStr.text中。

在你的第二个视图控制器中,你可能有一个指向视图控制器的实例的属性。 当你实例化你的第二个视图控制器时,你可以把它的属性分配给第一个视图控制器。

secondViewController.firstViewController = self; 或[secondViewController setFirstViewController:self];

然后当用户按下后退buttonviewDidAppear将被调用的第一个视图和更新string。

我假设你不想在任何其他地方存储这个数据,例如在你的模型或nsuserdefaults等

您可以通过以下方法获得对导航堆栈中前一个viewController的引用:

NSArray *viewControllers = self.navigationController.viewControllers; MyViewControllerClass *previousController = [viewControllers objectAtIndex:[viewControllers count] - 2]; 

然后,您可以在“上一个”视图控制器上设置一个属性来存储文本,甚至直接设置标签sockets的文本,如下所示:

 previousController.lblShowStr.text = self.strAddress; 

这不是最好的方法(最好的方法是创build一个自定义委托协议或使用NSNotificationCenter),但这是最简单的方法。