我有一个名为 ViewController
的主类,它包含 UIScrollView
并且在这个 ViewController
中我正在定义其他三个 Controller 持有 UITableViews 如下:
let viewController1 = storyboard?.instantiateViewControllerWithIdentifier("ViewController1") as! ViewController1
let viewController2 = storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2
let viewController3 = storyboard?.instantiateViewControllerWithIdentifier("ViewController3") as! ViewController3
然后将它们添加到 ScrollView 。
我已经实现了 UIScrollViewDelegate
,所以在完成滚动后,它会在那个 ViewController
中刷新我的 UITableView
。
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let page = scrollView.contentOffset.x / self.view.frame.width
}
我得到了页码,但是如果我在有 UITableView
的 ViewController2
中,我该如何重新加载?
最佳答案
在 ViewController
中保留一组 View Controller :
var viewControllers = [UIViewController]()
然后设置它们并将它们添加到此数组中:
viewControllers.append(storyboard?.instantiateViewControllerWithIdentifier("ViewController1") as! ViewController1)
viewControllers.append(storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2)
viewControllers.append(storyboard?.instantiateViewControllerWithIdentifier("ViewController3") as! ViewController3)
然后您可以在 ScrollView 委托(delegate)方法中引用它们:
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
}
}
关于ios - 在 Swift 中重新加载 UIScrollView 中的 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31382707/