Ios 在视图控制器之间共享数据
我有一个简单的单视图iOS5应用程序,我在其中添加了第二个视图控制器。我将它们嵌入导航控制器中,并在FirstViewController上放置了两个按钮。每个按钮都有一个segue的命名标识符,该标识符依次在iPhone应用程序的UI中显示我的SecondViewController 所有工作都如预期的那样,但是,我想在第二个视图控制器的标签中显示一些简单的内容,如“您单击了按钮1”。我已尝试将此数据手动放置在我在AppDelegate中声明的NSMutableString变量中,我可以在第二个视图控制器中访问该变量,但我分配给该变量的值从未显示在屏幕上 显然,创建了SecondViewController的一个新实例,这可能就是我没有看到它的原因。我已经创建了一个UILabel类型的IBOutlet,其名称为myLabel,以保存该值,但遗憾的是,我没有看到任何更改 任何帮助都将不胜感激Ios 在视图控制器之间共享数据,ios,viewcontroller,Ios,Viewcontroller,我有一个简单的单视图iOS5应用程序,我在其中添加了第二个视图控制器。我将它们嵌入导航控制器中,并在FirstViewController上放置了两个按钮。每个按钮都有一个segue的命名标识符,该标识符依次在iPhone应用程序的UI中显示我的SecondViewController 所有工作都如预期的那样,但是,我想在第二个视图控制器的标签中显示一些简单的内容,如“您单击了按钮1”。我已尝试将此数据手动放置在我在AppDelegate中声明的NSMutableString变量中,我可以在第二
<>注释:我很乐意发布代码,但我认为它不会对我的问题有帮助。 < 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;}