【问题标题】:Xcode - Pass property to view controller in storyboardXcode - 将属性传递给情节提要中的视图控制器
【发布时间】:2017-03-14 11:40:18
【问题描述】:

我想将属性传递给从情节提要中的容器视图创建的视图控制器。问题是我不知道该怎么做。

蓝色矩形是我有两个容器视图的区域,每个容器视图都引用一个视图控制器(一个是顶部的自定义表格视图控制器,我感兴趣,另一个是下面的视图控制器)。

问题是我的自定义表格视图控制器需要一些属性。我想从实例化情节提要的类中传递属性(情节提要是从 toher 类中调用的)。包含容器视图的视图控制器被实例化,如下所示:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Phenotype" bundle:nil];
        GeneralViewController *vc = [sb instantiateViewControllerWithIdentifier:@"phenotype"];
        [vc setProperty:property]; // I would like to pass this property to the custom table view controller.
        [self.navigationController pushViewController:vc animated:YES];

我尝试从我实例化 stroyboard 的类中获取表视图控制器,以在此时设置属性

TableViewController *tablevc = [sb instantiateViewControllerWithIdentifier:@"table"];
    [tablevc setProperty:property];

...但没有任何成功。

有人知道如何直接从正在实例化情节提要的视图控制器访问自定义表视图控制器的属性吗?

感谢您的帮助,

【问题讨论】:

    标签: ios objective-c properties uicontainerview


    【解决方案1】:

    从蓝色矩形中选择嵌入 segue 到顶部的 tableView 并给它一个 segue 标识符 :) 假设 segue 标识符是“abcd”。

    在你的 ViewController 中有容器写

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            if segue.identifier == "abcd" {
                let tableView : YourTableViewClass = segue.destination as! YourTableViewClass
                //pass whatever params want :)
            }
        }
    

    编辑

    嵌入式 segue 的行为与其他 segue 一样,但有一个例外,其他 segue 您必须以编程方式执行它们或触发某些事件,当容器加载时嵌入式 segue 会自动执行:)

    所以你可以有 segue 标识符,在 prepareForSegue 中编写代码,就像你为其他 segue 做的一样:)

    【讨论】:

    • 非常感谢!你让我今天一整天都感觉很好 :-)。我从来都不是故事板的忠实粉丝,我也从未真正深入了解这些细节。谢谢!!
    • 很高兴我的回答对你有用:) 快乐编码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多