首页 > 解决方案 > 如何实例化 ViewController 并在呈现的 ViewController 顶部保留导航栏?

问题描述

在 TabBar 控制器中,我有多个 ViewController。我想在不使用 segues 的情况下访问MediaDetailTableViewController并将ProfileTVC一些数据传递给它。
StoryBoard 的架构是这样的:

选项卡栏
1. Nav -> NewsFeed -> MediaDetailTableViewController
2. Nav -> ProfileTVC
从 ProfileTVC 我想实例化 MediaDetailTableViewController 并将一些数据传递给它。
使用下面显示的方法传递数据,但它会丢失顶部的导航栏,因此我无法返回 ProfileTVC. 此外,实例化 MediaDetailTableViewController 大约需要 2 秒。

//code inside ProfileTVC
 if let selectedIndex = tableView.indexPathForSelectedRow,
        selectedIndex.section != 0 && selectedIndex.section != 1 {
 let mediaDetailTVC = storyboard?.instantiateViewController(withIdentifier: "MediaDetailTableViewController") as! MediaDetailTableViewController
    mediaDetailTVC.currentUser = currentUser
    mediaDetailTVC.media = media[selectedIndex.section]
       self.present(mediaDetailTVC, animated: true, completion: nil)
   }

标签: swiftuistoryboardsegue

解决方案


PUSH 而不是现在

self.navigationController.push(mediaDetailTVC....)

推荐阅读