所以我有一个TableViewController。轻敲一个单元格时,会调用showEpisodes
segue。此segue设置为Show
并指向导航控制器,如下所示:
问题是我的视图以模态显示,即它没有导航控制器。
以下是我在主表视图控制器中使用的代码
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.cellForRowAtIndexPath(indexPath)
self.performSegueWithIdentifier("showEpisodes", sender: cell?.textLabel?.text)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showEpisodes" {
let viewController = segue.destinationViewController as! UINavigationController
let vc = viewController.topViewController as! EpisodesTableViewCOntroller
let indexPath: NSIndexPath = self.tableView.indexPathForSelectedRow!
let object: PFObject = self.objectAtIndexPath(indexPath)!
vc.podcast = object
// self.navigationController!.pushViewController(vc, animated: true)
}
}
如果我取消注释self.navigationController!.pushViewController(vc, animated: true)
部分,视图将被推得很好但是一旦加载,就会在其上模拟显示黑色窗口。我在调试器中检查了UI层次结构但没有成功。有什么想法吗?
答案 0 :(得分:6)
它当前正在使用模态转换的原因是因为您从一个导航控制器转到另一个导航控制器。当您更改导航控制器时,“show”segue标准地呈现模态。要使用push动画进行转换,需要将要转换的tableViewController从导航控制器中取出。