问题一:
在 YourTableViewController 类的顶部(不是在类内部,而是在顶部表示外部)实现以下协议:
protocol MyTableViewControllerDelegate {
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack)
}
然后您执行以下操作:在您的表视图控制器类(YourTableViewController)中实现这些:
弱 var 委托:MyTableViewControllerDelegate? \实现委托的风格。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let itemYouWantToPassBackToVC: SomeItemYouWantToPassBack = dataImplementedInTableView[indexPath.row]
delegate?.tableViewController(self, didFinishPickingItem item: itemYouWantToPassBackToVC)
dismissViewControllerAnimated(true, completion: nil)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
然后在您之前的 VC 中实现您在协议中创建的功能:
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack) {
// Here you take the "item" parameter and use it for your purpose. It is the item you wanted to pass back here
}
另外阅读苹果文档以了解有关协议和委托的更多信息。
问题2:
好的...在这种情况下,我建议如下:在 VC1 中实现以下功能:
@IBAction func unwindToVC1() {
\\you can leave this place empty
}
然后,注意这些词:在你的storyBoard 中找到TableView 2 的视图控制器(显示所有子类别的那个),在它上面你会看到三个按钮。 CTRL + 从黄色拖动到红色出口门,然后从弹出窗口中选择“unwindToVC1”。
在文档大纲(显示故事板中所有内容的列表视图)中找到新创建的 segue 并为其命名,让我们说“segueVC1”。
然后在 TableViewControllerNumberTwo 中实现这个:
override func tableView(tableView: UITableView, didSelectItemAtIndexpath indexPath: NSIndexPath) {
let item1 = yourDataModel[indexPath.row]
performSegueWithIdentifier("segueVC1", sender: item1)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let segue.identifier == "segueVC1" {
let vc = segue.destinationViewController as VC1 \\ VC1 is the first vc you want to segue to
vc.modelToReceive = sender as modelToReceiveClass
}
}