如何实例化ViewController并保留导航栏顶部的ViewController呈现?
How to instantiate ViewController and retain the navigation bar at the top of the ViewController presented?
在 TabBar 控制器中,我有多个 ViewController。我想从 ProfileTVC
访问 MediaDetailTableViewController
并在不使用 segues 的情况下将一些数据传递给它。
StoryBoard 的架构是这样的:
标签栏
1. 导航 -> 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)
}
按下而不是显示
self.navigationController.push(mediaDetailTVC....)
简单多了!
performSegue(withIdentifier:"MediaDetailTableViewController", sender: self)
在 TabBar 控制器中,我有多个 ViewController。我想从 ProfileTVC
访问 MediaDetailTableViewController
并在不使用 segues 的情况下将一些数据传递给它。
StoryBoard 的架构是这样的:
标签栏
1. 导航 -> 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)
}
按下而不是显示
self.navigationController.push(mediaDetailTVC....)
简单多了!
performSegue(withIdentifier:"MediaDetailTableViewController", sender: self)