给tableView的每个cell增加accessoryButton后,我们可以设置其segue以达到加载新的viewController并向其传想要的数据(prepareForSegue(sender)),这里提供另一种方法,不使用segue。
override func tableView(tableView: UITableView, accessoryButtonTappedForRowWithIndexPath indexPath: NSIndexPath) {
let navigationController = storyboard!.instantiateViewControllerWithIdentifier("ListNavigationController") 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)
}
这里我们利用storyboard来找到想要加载的viewController。每个viewController都有一个storyboard属性,通过它的instantiateViewControllerWithIdentifier()方法找到我们想要找的viewController(这里是navigationController),经过一些设置之后,我们用presentViewController(animated,completion)方法将viewController呈现出来,以达到目的。
而identifier(这里是"ListNavigationController")则在story board界面设置。
accessoryButtonPicture.png设置Storyboard ID我们便可以找到这个viewController。
网友评论