2015-09-04 49 views
1

我的前提是,我是XCode和Swift全新的,所以我知道我犯了愚蠢的错误,但我不知道在哪里。我的iOS应用程序的故事板:Swift/XCode 6.4:问题与导航控制器(后退按钮和prepareForSegue

enter image description here

,其中第一表视图和第二导航控制器之间的SEGUE被称为myTaskDetailSegue,其类型为展会(例如推送)现在我有一些问题:

1)既不在第一个表视图控制器,也不在第二个后退按钮显示,我不知道为什么。很多人告诉我,导航栏和后退按钮是默认的导航控制器,但他们并没有在课堂这里的第一个表视图控制器的出现

2)是方法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标识符是正确的,但是当一个行被挖掘什么都没有发生,并没有显示第二个表视图控制器。

我真的不知道我缺少什么,因为我缺乏经验......如果你能帮助我解释我这些事情,我将非常感激。 感谢所有

下面是完整的故事板: enter image description here

+0

两个'UINavigationViewControllers'的用途是什么? –

+0

我认为他们需要有一个导航栏和后退按钮...无论是在第一个表格视图和第二个...这是错误的? –

+0

是的,你只需要一个导航控制器在堆栈的顶部 – Paulw11

回答

5

你并不需要两个UINavigationController的你想要达到的目标。重要的是要注意,每当你(用一个segue或手动)一个新的UIViewController它被添加到导航堆栈。

根据Apple

推视图控制器显示其在导航界面视图并相应地更新导航控制。您通常会推送视图控制器以响应当前视图控制器中的用户操作,例如,响应用户点击表格中的一行。

所以,你可以删除你的故事板第二UINavigationController并直接使SEGUE您DetailsMyTaskViewController和更新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! DetailsMyTasksViewController 

     controller.detailItem = task 
     println("segue mostra task \(task.id)") 
    } 
} 

和后退按钮应该被默认为出现你之前说过。不过我强烈建议您阅读以下两个指南:

为了更好地理解该导航堆栈等

我希望这可以帮助您。

+0

感谢您的帮助Victor但它仍然不起作用,无论是赛格还是后退按钮都不显示......我能做些什么来发现错误? –

+0

你是否删除了第二个'UINavigationController',然后将单元格中的push segue添加到'DetailsMyTaskViewController'中? –

+0

好吧,我刚刚完成了一切......现在segue完美地工作,我看到从第二个表视图控制器到第一个后退按钮,但第二个后退按钮未命中(从第一个表视图控制器) –