我正在使用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"
}
}
}
}
是的。已驗證的故事板。一切看起來不錯。 –