重用UIViewController两个Tab栏项

Pab*_*blo 5 storyboard uitableview uiviewcontroller ios

我在故事板中有1个标签栏控制器,与之关联的是1个UIViewController.我想重新使用相同的UIViewController,以便在标签栏中创建第二个项目.当我从标签栏创建第二个关系来查看控制器时,我需要指定2个不同的项目名称.如何重新使用相同的视图控制器并从故事板中设置不同的项目名称?如果不能在故事板中做到这一点,那么我是否必须在标签栏控制器类中重命名或者有更好的方法?

我打算在prepareforsegue中提供不同的数据来查看控制器.

更新:

更多细节和澄清

在此输入图像描述

在上面标有VC的屏幕截图中,可以直接从tab,b)到3个过渡到达a).我想在初始标签栏中添加另一个DIRECT关系,就像"a"一样.

Aya*_*pta 13

我可以给你一些调整,至少那对我有用.

  1. 将tabbarcontroller和关联的选项卡项视图控制器拖到故事板中.根据需要命名.
  2. 创建一个要从故事板中重用的额外视图控制器.
  3. 向每个选项卡视图控制器添加容器视图,并删除其默认的嵌入式视图控制器.
  4. 从每个选项卡项控制器创建嵌入segue到可重用的视图控制器.

配置如下所示:

截图

因此,您可以将相同的嵌入式VC用于不同的tabbar项.显然,如果你需要tabbarcontroller的引用,你需要使用self.parentViewController.tabBarController而不是self.tabBarController直接使用.但它解决了从故事板重用VC的问题.


gut*_*ker 7

我发现只使用故事板的更简单的解决方案.

像这样设置你的故事板:

故事板

然后在您的Navigation ControllerIdentity Inspector中设置Restoration ID如下:

在此输入图像描述

并在您的ViewController类文件中输入以下代码:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.navigationItem.title = parent?.restorationIdentifier
    label.text = parent?.restorationIdentifier
}
Run Code Online (Sandbox Code Playgroud)

或根据parent?.restorationIdentifier价值做你喜欢的事

如果你不希望它Navigation TopBar出现在ViewController刚刚设置它None的所需的属性检查器中,Navigation Controller如下所示:

在此输入图像描述

而已!希望能帮助到你.