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

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

您将从一个非常复杂的项目开始 – 非常感动。 这里有一些关于故事板和segues的快速说明。

  • 如果您使用视图控制器设置故事板然后将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文件中,您会触发segue – 可能是按钮或某些操作。 听起来你已经有了这个:

 [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并获取引用,然后根据需要更新新的视图控制器。

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