教程里面讲了prepareForSegue的替代方法,贴出来看一下
override func tableView(tableView: UITableView, accessoryButtonTappedForRowWithIndexPath indexPath: NSIndexPath) {
// 这个函数和prepare for segue 相同作用
// Tells the delegate that the user tapped the accessory (disclosure) view associated with a given row.
//This time you’re not going to use a segue at all, but load the new view controller by hand from the storyboard.
let navigationController = storyboard!.instantiateViewControllerWithIdentifier("ListDetailNavigationController") as! UINavigationController
let controller = navigationController.topViewController as! ListDetailViewController
controller.delegate = self
let checklist = lists[indexPath.row]
controller.checklistToEdit = checklist
presentViewController(navigationController,animated: true, completion: nil)
// Presents a view controller modally.
}
可以看到,这里用的是tableView(accessoryButtonTappedForRowWithIndexPath)函数。即用户点了一下时候的动作。用"ListDetailNavigationController"指代ListDetailViewController的UINavigationController。使用这个方法之前,我们需要先将这个UINavigationController的storyboard ID改为ListDetailNavigationController