弹出视图以模态方式呈现,而不是展示

3
我有一个TableViewController。当单元格被点击时,会调用showEpisodes segue。这个segue设置为Show,并指向一个Navigation Controller,就像这样:Segue。问题是我的视图以模态方式显示,即它没有一个导航控制器。以下是我在主表视图控制器中使用的代码:
    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层次结构,但没有成功。请问有什么想法吗?


当它呈现为模态时,您说它不再在导航控制器中?在您的图像中,它显示您从“主表视图控制器”转换到另一个导航控制器... - Jeff Lewis
这是正确的,这正是我真正不理解的。 - user2747220
“Show” segue 在从一个导航控制器到另一个导航控制器时使用模态转换。如果您将表视图(其中包含播放和下载按钮)从当前导航控制器中移出,则应使用推送转换进行“show” segue。 - Jeff Lewis
删除第二个导航控制器解决了问题。谢谢。如果您想将其提交为答案,我会点赞的。 - user2747220
太好了,它起作用了。谢谢! - Jeff Lewis
1个回答

12

它当前使用模态过渡的原因是因为您正在从一个导航控制器切换到另一个导航控制器。当您更改导航控制器时,“show”转场呈现模态视图是标准做法。要使它使用推送动画进行过渡,您需要将正在进行过渡的tableViewController从导航控制器中移除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接