UITableViewController与具有多个页面的ContentViewController之间的交换日期

时间:2015-12-15 17:34:49

标签: ios swift uitableview

我正在开发一个应用程序,我需要从tableviewcontroller中的tableview单元格中传递一个值数组,这是一个具有页面卷曲转换的contentview视图控制器的初始视图控制器。

每个页面都有一个textview,其中将填充从初始视图控制器传递的值,并且可以由用户编辑。

我的问题是,我无法使用新值更新数组并将其传递回初始视图控制器

我尝试了以下内容:

  1. 我在我的initialview控制器中实现了pageviewcontroller方法,以创建具有页面卷曲转换的ContentViewController实例,并且能够在页面卷曲完成时将值传递给每个页面。但我试图找出一种方法将更新后的值传递回tableviewcontroller,我实例化了该对象。

  2. 我从tableview尝试了Segue到contentViewcontroller,但它不起作用。

  3. 感谢有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

使用委托模式。

ContentViewController中定义协议:

protocol UpdateModelDelegate {
    func didDismissContentViewController(controller:ContentViewController)
}

ContentViewController

中建立委托变量
var delegate: UpdateModelDelegate?

当您解除ContentViewController来电delegate?.didDismissContentViewController(self)时,会将数据发送回UITableViewController

UITableViewController符合此协议。

class MyTableViewControllerSubclass: UITableviewController, UpdateModelDelegate

在展示ContentViewController时,将UITableViewSubclass设为代表。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var contentViewController: ContentViewController()
    //After you pass the necessary data to contentViewController...
    contentViewController.delegate? = self
}

最后,在UITableviewController子类中实现委托函数。

func didDismissContentViewController(controller:ContentViewController) {
    //You're passed in the contentViewController here, use relevant data to update your model. 
}