我只是一个一般的理论问题,我希望能引起一些回应。我一直在学习ios,有一个项目正在修改我的视图。它具有一个运行循环,该循环管理一个连接到服务器的套接字,并在传入消息时进行聊天。textview将使用新的聊天进行更新。现在,此文本视图已附加到故事板一。我现在要问的是,当我添加故事板时,他们是否会转到故事板二(我现在正在阅读此多页面方面的内容),视图一中的聊天是否会继续更新,尽管用户当然不会看到它直到他们返回视野。第二个问题是我可以在第一个视图控制器中同时更新故事板2和一个故事板。我看到您可以在segue的书中将变量传递给故事板2,但是我的套接字运行循环可以驻留在视图控制器中一个访问视图控制器中两个变量。如果不是这样,听起来我需要研究某种队列以将更新从telnet传递到故事板2。

最佳答案

您从一个非常复杂的项目开始-印象深刻。这里有一些关于情节提要和剧情的快速笔记。

  • (如果您使用视图控制器设置情节提要),然后为另一个视图控制器设置segue-当您选择创建新的视图控制器时,原始视图仍在内存中,如果以这种方式进行编程,它仍然可以响应通知或回调。
  • 当您“弹出”或“关闭”所设置的视图控制器时,它已从内存中消失。
  • 当您搜索
  • 时,会通过一种称为prepareForSeque的方法自动获得对新视图控制器的引用。您可以将此引用存储在一个属性中,并根据需要使用该属性对其进行更新。

  • 因此,这是一个伪示例:
  • 视图控制器a有一些网络代码,我猜测当缓冲区被填充时,它将调用视图控制器a中的方法。我们称它为networkMethod作为参考。在网络方法方面,假设您最终得到一个字符串,并且想要将该字符串传递给视图控制器b,以便可以在那里进行操作。因此,我们将不只是设置变量,而是将其传递给方法,以便您可以对其进行处理。希望这种情况符合您的需求,否则我的示例其余部分将不合时宜。

  • 任务-为视图控制器设置参考b。
    在您的视图控制器的导入部分中.h文件
    #import "ViewControllerB.h"  //this is the name of your view controller b class
    

    在界面部分(.h文件)的视图控制器a中添加:
    @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
    }
    

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

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

    关于objective-c - 关于在 View 之间在ios中共享信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13616714/

    10-14 22:03