2012-11-29 50 views
2

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

回答

2

你刚开始时有一个非常复杂的项目 - 印象非常深刻。这里有几个关于故事板和赛车的简要说明。

  • ,如果你设置使用视图控制器,然后设置一个SEGUE到另一个视图控制器故事板 - 当你Segue公司创建新的视图控制器,原来是仍然在内存中,仍然可以以通知或如果回调响应你这样编程。

    • 当你“弹出”或“解散”你的视图控制器时,它会从内存中消失。

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

因此,这里是一个伪例如:

  • 视图控制器一个有一些网络代码,我猜当缓冲器被填充它调用视图控制器的方法。我们称它为networkMethod作为参考。在网络方法方面,假设你最终得到一个字符串,并且你想把这个字符串传递给你的视图控制器b,所以你可以在那里做一些事情。因此,我们不是仅仅设置一个变量,而是通过一个方法来传递它,所以你可以用它做一些事情。希望这种情况符合你的需求,否则我的例子的其余部分将脱离基地。

任务 - 为视图控制器设置参考b。 在您的视图控制器.h文件

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

在视图控制器在接口部分的进口段(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 
} 

应该大致为您提供一个框架,在这里可以设置两个视点控制器,赛格瑞和抓住一个参考,然后根据需要更新新的视图控制器。

希望有帮助。祝你好运。

+0

这看起来基本上像我在找什么。只是创建两个视图之间共享的路径。我对此进行了仔细阅读,并会看看我是否可以设置一些。我半认为必须有一些信息共享能力足够强大,以保持意见都在类似的国家,看起来像是存在。在我的阅读中,我发现在视图之间存在可变传递,但迄今为止还没有很多数据。谢谢 – LanternMike

+0

我突出显示了一个非常常见的模型,用于传递数据 - 我们将它称为父级或下一个视图控制器。使用这种方法的强大之处在于,您可以传递数据,甚至可以在该子实例中调用方法。现在,如果你想让孩子“回话”,常见的模式是“协议和代表”。这里有很多关于堆栈溢出的文章,所以只需要搜索它。祝你好运。 – CocoaEv

+0

远程登录完成错误,我开始与这些想法一起工作。首先,我必须弄清楚如何将视图控制器分配到新的故事板页面,然后我使用你的方法在seque中分配了viewb,我进一步并命名了segue并检查了那个,做了nslog (viewb)分配和它的工作感谢:) – LanternMike