【发布时间】:2015-12-01 04:16:27
【问题描述】:
我保证我对 Xcode 和 Swift 完全陌生,所以我知道我犯了一些愚蠢的错误,但我不知道在哪里。这是我的 iOS 应用故事板的一部分:
第一个表格视图和第二个导航控制器之间的segue称为myTaskDetailSegue,其类型为Show (e.g. Push)。现在我有一些问题:
-
第一个表格视图控制器和第二个表格视图控制器都没有显示后退按钮,我不知道为什么。很多人告诉我导航栏和后退按钮是导航控制器中的默认设置,但它们没有出现
-
在第一个表视图控制器的类中,这里是方法prepareForSegue()
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if (segue.identifier == "myTaskDetailSegue" ) { let indexPath = self.tableView.indexPathForSelectedRow() let task = self.taskCollection[indexPath!.row] as Task let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailsMyTasksViewController controller.detailItem = task println("segue mostra task \(task.id)") controller.navigationItem.leftItemsSupplementBackButton = true } }
所以你可以读到 segue 标识符是正确的,但是当点击一行时没有任何反应并且第二个表格视图控制器没有显示。
由于缺乏经验,我真的不知道自己缺少什么。
这是完整的故事板:
【问题讨论】:
-
两个
UINavigationViewControllers的目的是什么? -
我认为他们需要有一个导航栏和后退按钮......在第一个表格视图和第二个表格视图中......这是错误的吗?
-
是的,您只需要一个位于堆栈“顶部”的导航控制器
-
对不起,我不明白...为什么我需要一个?
-
因为导航控制器管理着它下面出现的所有视图控制器。当您推送一个新场景时,您会将其推送到现有的导航堆栈中。您没有返回按钮的原因是因为您正在推送一个新的控制器堆栈,所以您推送的场景是顶部并且无处可返回。
标签: ios xcode swift uitableview segue