在 Swift 内重新加载 UIScrollView 内的 UITableView

Reload UITableView inside UIScrollView in Swift

我有一个名为 ViewController 的主要 class,它包含 UIScrollView,在这个 ViewController 中,我正在定义其他三个包含 UITableViews 的控制器如下:

let viewController1 = storyboard?.instantiateViewControllerWithIdentifier("ViewController1") as! ViewController1
let viewController2 = storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2
let viewController3 = storyboard?.instantiateViewControllerWithIdentifier("ViewController3") as! ViewController3

然后将它们添加到滚动视图。

我已经实现了 UIScrollViewDelegate,所以在滚动完成后刷新我的 UITableView ViewController

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {

    let page = scrollView.contentOffset.x / self.view.frame.width

}

我得到了页码,但是如果我在 ViewController2 中有 UITableView,我该如何重新加载?

在您的 ViewController:

中保留一组视图控制器
var viewControllers = [UIViewController]()

然后设置它们并将它们添加到这个数组中:

viewControllers.append(storyboard?.instantiateViewControllerWithIdentifier("ViewController1") as! ViewController1)
viewControllers.append(storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2)
viewControllers.append(storyboard?.instantiateViewControllerWithIdentifier("ViewController3") as! ViewController3)

然后您可以在滚动视图委托方法中引用它们:

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    let page = Int(floor(scrollView.contentOffset.x / self.view.frame.width))
    if page < viewControllers.count {
        let viewController = viewControllers[page]
        // do whatever with viewController
    }
}