如何将数据传递给从 UIStoryboard 实例化的 table 视图控制器?

How to pass data to table view controller being instantiated from UIStoryboard?

我有一个 ViewController 和一个包含两个 TableViewController 的 UIScrollView。

    let allViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController;
    let favoritesViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController;

在 scrollViewDidEndDecelerating 委托中的某个时刻,我想将当前页面从 UIScrollView(1 或 2)发送到我的 ContentViewController:

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    let page = Int(scrollView.contentOffset.x / scrollView.frame.size.width)

    // how to send page to ContentViewController
    //delegate.pageChanged(page)
}

如果我不使用 prepareForSegue,如何实际将数据发送到 UITableViewController?

我尝试的是向 ViewController 添加一个协议,但我无法在 ContentVieController 中初始化委托:

protocol PageChangedDelegate {
    func pageChanged(page: Int)
}

var delegate: PageChangedDelegate!

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    let page = Int(scrollView.contentOffset.x / scrollView.frame.size.width)

    delegate.pageChanged(page) // delegate is nil here
}

当您实例化一个 viewController 并且向下转换时使用 "as!" 您现在可以访问该视图控制器的变量,

假设您的内容视图控制器有变量 A、B、C,您可以这样做

let allViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController
allViewController.A = "Setting variable A on view controller"
allViewController.B = "hi"
allViewController.C = "the view controller now has its variables assigned"