我使用TableViewController
作为SplitViewController
的主视图。一切看起来都很正确,但我不明白为什么当我点击任何一行时prepareForSegue()
没有被调用?
我可以通过performSegueWithIdentifier()
上的tableView.didSelectRowAtIndexPath
来强制执行此操作。
我想在使用SplitViewController
时我不应该这样做。
还有一点,我没有改变AppDelegate
中的任何内容。
这可能是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 :(得分:0)
在拆分视图控制器的主视图控制器上选择行时,通常没有动画segue,因为细节视图已经可见。
然而,检查普通的香草Xcode模板,我注意到有一个“showDetail”segue。应该调用这个,还有prepareForSegue
。
确保在故事板中正确连接所有内容。在storyboard中,segue类型应设置为“Show Detail(例如Replace)”。