2015-07-13 54 views
0

我打過電話ViewController其持有的UIScrollView,這裏面ViewController我界定持有UITableViews如下三個其他控制器的主類:刷新UITableView的UIScrollView的內部斯威夫特

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

然後將它們添加到滾動視圖。

我已經實施了UIScrollViewDelegate,所以在滾動完成後,在那個ViewController處刷新我的UITableView

func scrollViewDidEndDecelerating(scrollView: UIScrollView) { 

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

} 

我得到了頁碼,但我怎麼重裝例如,如果我在ViewController2具有UITableView

+0

使用插座引用和其中一個'UITableView'重載方法。 –

+0

我不確定你想達到什麼,但[UIPageViewController](https://developer.apple.com/library/prerelease/ios//documentation/UIKit/Reference/UIPageViewControllerClassReferenceClassRef/index.html)會是更適合這個目的? –

+0

您應該將表視圖控制器引用存儲在屬性中而不是局部變量中。 – Paulw11

回答

1

保持視圖控制器的陣列,您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 
    } 
} 
+0

它給出了一個錯誤'不能用類型(Float)的索引來下標類型[(UIViewController)]的值'我怎樣才能從該控制器重新加載我的UITableView。什麼是定義控制器並重新加載其UITableView的正確方法! ? – AaoIi

+0

把它當作int!使用Float to Int轉換 –

+0

是的,Float應該是Int,更新的答案。 –