【问题标题】:Navigating between tab bar controller screens in different navigation controllers在不同导航控制器中的标签栏控制器屏幕之间导航
【发布时间】:2017-03-15 13:22:41
【问题描述】:

首先很抱歉,如果我解释得不好,我已经多次重新阅读我的问题,但我无法弄清楚如何解释这个问题的好方法。如果您有任何其他问题,请告诉我...

我的应用程序的布局需要将屏幕嵌入标签栏控制器和导航控制器。我已经对其进行了设置,以便它在大多数情况下都能正常工作,但是我在从一个导航控制器/选项卡导航到另一个时遇到了一些问题 - 我有一个导航控制器用于一个选项卡(用户在其中选择图像上传),以及第二个选项卡中用于屏幕的第二个导航控制器。这是它在故事板中的样子:

我遇到的问题是,一旦用户在“上部”导航控制器(“右”选项卡)中选择要发布的照片​​并点击“发布”,我就会导航到新更新的提要(位于另一个选项卡)与:

                let feedController = self.storyboard?.instantiateViewController(withIdentifier: "feedVC") as! FeedViewController
                feedController.navigationItem.setHidesBackButton(true, animated: false)
                self.navigationController?.pushViewController(feedController, animated: true)

虽然屏幕和更新的提要正确显示,但我仍在“右”标签中,而提要应该在“左”标签中。

我的问题是,我如何正确导航到另一个导航控制器,并返回到正确的选项卡中?

【问题讨论】:

  • 也许tabBarController?.selectedIndex = 1 会有所帮助?切换选项卡而不是将新控制器推送到第一个选项卡的导航堆栈?
  • 我尝试在推送之前添加self.tabBarController?.selectedIndex = 0,虽然它确实让我回到了正确的选项卡,但提要显示为在我选择要上传的图像之前 - 更新后的提要仍在“第二”标签。上传图片后,我将完全离开第二个标签。
  • 我对流程有点困惑。您能否在切换标签后出现原始提要时刷新它,并且不要将其推送到其他地方? (除非第一个选项卡中的原始内容需要保持不更新的原因。)或者您想将新的提要视图推送到旧的提要视图之上?在这种情况下,切换选项卡,然后将您已经为推送提供的代码放入提要视图控制器中就可以了。
  • 是的,抱歉,我很难解释。基本上我有两个标签,左边和右边。左侧选项卡有提要和其他几个窗口。右侧选项卡唯一具有的是上传控制器,您可以在其中选择要上传的图像,然后点击“发布”。此时,您应该离开右侧选项卡并返回左侧选项卡,进入新更新的提要。但是,按照我现在的方式,当我上传图片时,更新后的提要显示在上传选项卡中,而不是在提要选项卡中。
  • 如果我再次点击右侧(上传)选项卡图标两次,它会返回到应有的方式,同样,如果我对左侧(提要)选项卡图标执行相同操作,它会显示正确的更新提要,一切都恢复正常。我只是不想在上传图片后点击每个标签图标两次才能正确显示屏幕。

标签: ios swift uinavigationcontroller uitabbarcontroller


【解决方案1】:

您可以使用tabBarController?.selectedIndex = 0 切换选项卡,而不是将新的视图控制器推送到当前选项卡的导航堆栈上。这应该会带您回到原始提要页面,而无需任何推送代码。

为了使用新帖子更新它,您需要在数据出现时刷新数据,方法是重写视图控制器的 viewWillAppear 方法以重新获取数据并重新加载集合视图。

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多