在 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
}
}
我有一个名为 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
}
}