【问题标题】:Communication between navigation controller and container view导航控制器和容器视图之间的通信
【发布时间】:2016-08-08 16:19:42
【问题描述】:
      Parent
  View Controller
 _________________
|                 |
|                 |
|                 |       Navigation Cont.
|_________________|      _________________
|                 |     |                 |
|                 |     |                 |
| Container View  | --> |                 |  -->  Child View Controllers 
|                 |     |                 |
|_________________|     |_________________|

我的应用有一个导航结构,它由一个父视图控制器和一个包含导航控制器(及其子视图控制器)的容器组成。问题是在这些子视图控制器的初始化过程中,我想传递父视图控制器提供的一些值。不幸的是,父级中使用的方法prepareForSegue 仅检测容器segue,但在子视图控制器发生更改时不会调用它。

如何解决这个问题?我正在使用 Swift,但我也了解 Objective-C。

【问题讨论】:

  • 我会使用委托模式。
  • 到目前为止,我尝试了委托,但我只能传递值 Container --> Parent,而不是 Parent --> Container,就像我正在尝试做的那样。

标签: ios objective-c swift uinavigationcontroller uicontainerview


【解决方案1】:

你可以用prepareforsegue点赞,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"])
{
    // Get reference to the destination view controller
    YourViewController *vc = [segue destinationViewController];

    // Pass any objects to the view controller here, like...
    [vc setMyObjectHere:object];
}
}

您可以从容器视图控制器中执行此操作

 NSArray *viewControllers = self.navigationController.viewControllers;
 UIViewController *rootViewController = (UIViewController *)[viewControllers objectAtIndex:viewControllers.count - 2]; //index of your root viewcontroller

并参考this link 将数据传递给`containerview's VC'

【讨论】:

  • 谢谢,但是我之前说过prepareForSegue只在容器加载时被调用一次,当容器内的navigationcontroller发生任何变化时,问题就存在了,因为parent中的prepareforsegue方法是没有被调用。
【解决方案2】:

嗯,最后花了一些时间……但我终于明白了。 很简单:孩子将通过self.parentview.parentview 与父母交谈。几个代表就完成了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-10
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多