在视图之间分享ios中的信息

时间:2012-11-29 00:12:53

标签: objective-c ios ios5

我只是一个普遍的理论问题,我希望能够产生一些回应。我一直在学习ios并且有一个项目有一个我正在摆弄的视图。它有一个运行循环,用于管理连接到服务器的套接字,并在进入时进行聊天。文本视图通过新聊天进行更新。现在这个textview附加到故事板一。我现在要问他们当我添加它时是否会去故事板二(我现在正在阅读这个多页面方面),视频中的聊天是否会继续更新,尽管用户当然不会看到它直到他们回到视野。第二个问题是我可以在第一个视图控制器中同时更新故事板2和一个。我看到你可以将变量传递到我在segue中的故事板2,但是我的套接字可以运行在视图控制器中的一个访问视图控制器两个变量。如果不是,我听起来需要调查某种队列来将更新从telnet传递到故事板2。

1 个答案:

答案 0 :(得分:2)

你从一个非常复杂的项目开始 - 给人留下了深刻的印象。以下是关于故事板和赛段的几个快速说明。

  • 如果您使用视图控制器设置故事板然后将segue设置为另一个视图控制器 - 当您创建新视图控制器时,原始文件仍在内存中,如果您仍然可以响应通知或回调以这种方式编程。

    • 当你“弹出”或“关闭”你所观察到的视图控制器时,它就会从记忆中消失。

    • 当您进行segue时,您会自动在名为prepareForSeque的方法中获得对新视图控制器的引用。您可以将此引用存储在属性中,并使用该属性根据需要对其进行更新。

所以这是一个伪示例:

  • 查看控制器a有一些网络代码,我猜测缓冲区何时被填充,它调用视图控制器a中的方法。我们称之为networkMethod作为参考。在网络方法方面,假设您最终得到一个字符串,并且您希望将该字符串传递给视图控制器b,以便您可以在那里执行某些操作。因此,我们不会只设置变量,而是将其传递给方法,因此您可以使用它来执行某些操作。希望这个场景符合您的需求,否则我的示例的其余部分将不在基础上。

任务 - 为视图控制器b设置参考。   在视图控制器的导入部分中.h文件

#import "ViewControllerB.h"  //this is the name of your view controller b class

在视图控制器a中的接口部分(.h文件)中添加:

@property (nonatomic, strong) ViewControllerB *viewB;
你的.m文件中的

你会触发你的猜测 - 可能是按钮或某个动作。听起来你已经有了这个:

[self performSegueWithIdentifier:@"viewB" sender:self];

现在创建一个如下所示的新方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    self.viewB = segue.destinationViewController;  //this stores a reference for later

}

现在在你的回调方法中你可以像这样引用视图控制器b:

-(void)networkCallbackMethod:(NSString*)stringData {

    if (self.viewB) {

     [self.viewB myCustomMethodUsingPassedData:stringData];

    }


}

然后最终在视图控制器b中你会得到这样的匹配方法:

-(void)myCustomeMethodUsingPassedData:(NSString*)stringData {
     //update the view here
}

应该大致为您提供一个框架,您可以在其中设置两个视图控制器,segue并获取引用,然后根据需要更新新的视图控制器。

希望有所帮助。祝你好运。