2015-07-21 49 views
0

我正在使用TableViewController作爲SplitViewController的主視圖。一切看起來不錯,但我不明白爲什麼prepareForSegue()沒有被點擊任何行時被調用?
我可以通過tableView.didSelectRowAtIndexPath致電performSegueWithIdentifier()來強制它。
我想我不應該在使用SplitViewController的時候這樣做。

還有一件事,我沒有改變我的AppDelegate中的任何東西。
當我在SplitViewController的主視圖中選擇tableViewCell時,PrepareForSegue未被調用

難道這就是TableViewController未被識別爲SplitViewController的MasterView的原因嗎?


這裏是我的TableViewController看起來像:

class MasterViewController: UITableViewController { 

    var links = [SideBarLink]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.links.append(SideBarLink(label: "Home", url: "http://google.com")) 
     self.links.append(SideBarLink(label: "Contact", url: "http://google.com")) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    // MARK: - Table view data source 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 2 
    } 


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Item", forIndexPath: indexPath) 
     let link = self.links[indexPath.row] 
     cell.textLabel?.text = link.label 
     return cell 
    } 

    override func tableView(tableView: UITableView, 
     didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
      tableView.deselectRowAtIndexPath(indexPath, animated: true) 

    } 

    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     if let indexPath = tableView.indexPathForSelectedRow { 
      if indexPath == 0 && segue.identifier == "ShowHome" { 
       let destination = segue.destinationViewController as! HomeViewController 
       destination.name.text = "Home" 
      } 
      if indexPath == 1 && segue.identifier == "ShowContact" { 
       let destination = segue.destinationViewController as! HomeViewController 
       destination.name.text = "Contact" 
      } 

     } 

    } 


} 

回答

0

拆分視圖控制器的主視圖控制器上選擇行通常沒有動畫賽格瑞因爲詳細視圖已經可見。

然而,檢查普通的香草Xcode模板,我注意到有一個「showDetail」segue。這個應該叫,還有prepareForSegue

確保故事板中的所有內容都正確連接。在故事板中,segue類型應設置爲「顯示詳細信息(例如替換)」。

+0

是的。已驗證的故事板。一切看起來不錯。 –

相關問題