Ios 在视图控制器之间共享数据

Ios 在视图控制器之间共享数据,ios,viewcontroller,Ios,Viewcontroller,我有一个简单的单视图iOS5应用程序,我在其中添加了第二个视图控制器。我将它们嵌入导航控制器中,并在FirstViewController上放置了两个按钮。每个按钮都有一个segue的命名标识符,该标识符依次在iPhone应用程序的UI中显示我的SecondViewController 所有工作都如预期的那样,但是,我想在第二个视图控制器的标签中显示一些简单的内容,如“您单击了按钮1”。我已尝试将此数据手动放置在我在AppDelegate中声明的NSMutableString变量中,我可以在第二

我有一个简单的单视图iOS5应用程序,我在其中添加了第二个视图控制器。我将它们嵌入导航控制器中,并在FirstViewController上放置了两个按钮。每个按钮都有一个segue的命名标识符,该标识符依次在iPhone应用程序的UI中显示我的SecondViewController

所有工作都如预期的那样,但是,我想在第二个视图控制器的标签中显示一些简单的内容,如“您单击了按钮1”。我已尝试将此数据手动放置在我在AppDelegate中声明的NSMutableString变量中,我可以在第二个视图控制器中访问该变量,但我分配给该变量的值从未显示在屏幕上

显然,创建了SecondViewController的一个新实例,这可能就是我没有看到它的原因。我已经创建了一个UILabel类型的IBOutlet,其名称为myLabel,以保存该值,但遗憾的是,我没有看到任何更改

任何帮助都将不胜感激


<>注释:我很乐意发布代码,但我认为它不会对我的问题有帮助。

< P>在视图控制器之间传递数据,你应该考虑。 1.为视图控制器创建一个自定义初始化,该初始化传递附加信息或 2.在从第一个视图控制器访问的第二个视图控制器上创建属性

您可以为所创建的IBOutlet创建属性,但需要确保,如果从第一个视图控制器访问该属性,则该属性是在加载视图后创建的


在没有看到当前代码的情况下,很难为您提供更多的指导

在这种情况下,我的解决方案始终是一个自定义的
-init
方法。比如,

-initWithButtonPressedString:(NSString*)message;
在第二个视图控制器中声明并调用:

self.secondView = [[SecondViewController alloc]initWithButtonPressedString:@"some conditional string"];
然后,只需要在第二个视图控制器中使用iVar来处理传递的字符串。

是否使用故事板? 无论如何,您是否已将IBOutlet连接到Interface Builder中的变量

若您使用故事板,您可能会尝试使用名为
-(void)prepareforsgue:(UIStoryboardSegue*)分段发送方:(id)发送方


您只需要初始化新的ViewController(您的目的地)并引用它们的变量。

您也可以使用通知。在FirstViewController第一个按钮的IBAction中,可以添加

NSNotification*messageFromFirstViewController=[NSNotification notificationWithName:@“firstbuttonMessage”对象:@“您单击了按钮1”];
[[NSNotificationCenter defaultCenter]postNotification:messageFromFirstViewController]

和第二个按钮的IBAction类似

在第二个ViewController的viewDidLoad中,您可以添加

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(useNotification:) name:@"firstButtonMessage" object:nil];
创建useNotification方法以更改myLabel:

-(void) useNotification:(NSNotification *)notification {
self.myLabel.text = notification.object;}

正是我要回答的+1.
-(void) useNotification:(NSNotification *)notification {
self.myLabel.text = notification.object;}