【问题标题】:Instantiate view controller many ties inside the same tab bar item在同一个标​​签栏项目内实例化视图控制器许多关系
【发布时间】:2018-02-12 14:46:59
【问题描述】:

我有基于 tableView 的幻灯片菜单。我还在 IB 上创建了标签栏。 标签栏上的第一项类似于主页。默认情况下,运行应用程序时该项目显示主屏幕。当从菜单中选择一项时,它应该在与主页相同的视图中打开。

//菜单项中负责选择主页标签栏项的部分代码

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
ContainerVC.tabBarViewController?.selectedIndex = 0
}

//分离视图控制器上的viewWillAppear函数

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

    let vc = self.storyboard?.instantiateViewController(withIdentifier: "DynNews")
    self.navigationController?.pushViewController(vc!, animated: true)

}

这仅在启动应用程序时有效。后来应用程序只显示主页。这是因为标签栏只加载一次视图然后选择标签索引不会调用 viewWillAppear 但我不知道如何解决这个问题。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您可以通过多种不同的方法来实现此功能。 要在标签栏内导航,您应该将控制器嵌入到导航控制器中。 这张图可以帮助你理解。

    您还可以从 linklink 获得更多帮助。您还可以在 cocoacontrols 和 github 上查看所需功能的库数量。为了更好地理解,我推荐apple documentation

    【讨论】:

    • 我的菜单没有问题,它已经实现了。问题是情节提要 ID 称为“DynNews”的视图控制器。我设法显示该控制器,但仅在启动应用程序时显示一次,后来我没有管理,因为选择标签栏索引不会触发 viewWillAppear 功能。
    • 如果您在标签之间切换,它将触发视图显示。
    猜你喜欢
    • 2017-07-24
    • 2020-04-15
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多