在开发中通过StoryBoard中的Container View设计了一个ViewController嵌套一个TableViewController,需要在ViewController中实现代理方法,需要在TableViewController中设置delegate,以前的使用先实例化TableViewController再设置delegate的方法无效,所以需要用另一种思路解决设置delegate的问题。

通过stackoverflow检索到的方法,需要重写prepareForSegue方法获取下一个ViewController,即

[segue destinationViewController];

具体实现方法如下:

  1. 设置Container之间segue的identifier,例如“SES_TableViewController”。
  2. 在使用的Container的ViewController中实现代理方法,并重写prepareForSegue,具体代码如下:
#pragma mark - prepareForSegue
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"SES_TableViewController"]) {
        self.delegate = [segue destinationViewController]; // 设置代理
    }
}

如果需要获取到下一个ViewController的delegate,可以使用如下代码:

#pragma mark - prepareForSegue
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"SES_TableViewController"]) {
        // 将自身delegate传过去
        TableViewController * tableViewController = [segue destinationViewController];
        tableViewController.delegate_BaseVC = self;
    }
}

参考网址:

http://stackoverflow.com/questions/18672590/getting-reference-to-the-view-of-a-container-view

http://stackoverflow.com/questions/15705555/access-to-container-view-controller

3 对 “[iOS]StoryBoard中Container View获得ViewController”的想法;

  1. 小紫呀,你弄个板块来留言也是极好的阿。
    “如果你在做毫不费力的事情,就是在浪费时间”,我觉得我现在就是浪费时间。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注