2015-09-04 90 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完美地工作,我看到從第二個表視圖控制器到第一個後退按鈕,但第二個後退按鈕未命中(從第一個表視圖控制器) –

相關問題