2015-01-11 155 views
0

我使用didDeselectRowAtIndexPath通過不同的故事板像瀏覽:Segue公司VS didDeselectRowAtIndexPath

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let story = ["News","Video","Twitter","Request Info","More"] 

    let vc = self.storyboard?.instantiateViewControllerWithIdentifier(story[indexPath.row]) as NewsFeedTableViewController 
    self.presentViewController(vc, animated: true, completion: nil) 

} 

然而,Navigation Bar顯示不出來,當我使用此功能。但是,當我使用segue時,出現Navigation Bar

現在的問題是:

  1. tableViewCells不能Segue公司超過1分鏡
  2. 需要導航欄在App滾動(這似乎需要Segue

任何通過此解決方案?

回答

2

你正在使用presentViewController,這就是爲什麼你沒有得到NavigationBar,它以模態方式呈現視圖。取而代之的是pushViewController像:

self.navigationController?.pushViewController(vc, animated: true) 

可能在你的故事板的SEGUE類型將是push,這就是爲什麼你所得到的導航欄。

你可能會喜歡下面:

  1. presentViewController:animated:completion:
  2. ViewController Programming Guide for iOS
+0

我無法將普通的'ViewController'導入它,因爲它只能推送作爲基本視圖控制器的'TableViewController'。斯威夫特說「Swift Dynamic Caste Failed」。任何解決方案? – tika

+0

@ user2078462:不,這是不正確的,你可以推動任何viewcontrollers(如果你的父視圖中有一個UINavigationCotroller) –

+0

看起來像加載推送新的ViewController的父級的'super.viewDidLoad()' – tika

0

您呈現下一個視圖控制器,並沒有把它。 (至少在1情況下)所以你有一個模式鏈接,沒有導航控制器!

您可以使用.pushViewController或只需performSegue並確保您的segue類型爲push。我會去performSegue並更改每個switchcase中的identifier名稱。

而且你還可以通過在prepareForSegue

-1

數據好叫performSegue在didSelectRow。並在perpareSegue方法中執行操作。

+0

這樣做有什麼問題? – coreDeviOS