2014-09-20 206 views
0

我有2個ViewControllers,其中每個包含一個滾動視圖(顯示幾個圖)和一個tableview。 我想根據滾動視圖中顯示的當前圖形來更新tableview內容。UIScrollView內容更改時更新UITableView

scrollview由獨立的類「GraphScrollView」管理,其中屬性currentIndex存儲當前顯示的圖形。

問題是我不知道如何通知viewController currentIndex已更改,以便它可以發送reloadData方法來更新tableview。 我正在考慮在GraphScrollView類中發佈通知,並在2個viewControllers中添加一個Observer,但在這種情況下,兩個ViewController都會被通知,而我只想通知viewController當前活動視圖(因爲兩個VC應該是獨立的,也是因爲2個viewController可以有不同數量的圖形,因此currentIndex可能是兩個VC之一的錯誤值)。

感謝, 科拉多

回答

0

我相信你可以設置和刪除視圖控制器作爲觀察員「活動視圖」更改時。

你也可以創建一個委託協議,並切換哪個視圖控制器是委託,但我實際上發現比沒有特別獲益的通知更多的工作。

0

從您的問題中不清楚您如何在滾動視圖中更改currentIndex。但是,您始終可以在視圖控制器中實現UIScrollViewDelegate以在滾動結束時獲取更新:

... 
@implementation ViewController 
... 
- (void)viewDidLoad { 
    ... 
    self.graphScrollView.delegate = self; 
    ... 

} 

... 
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    if (self.graphScrollView.currentIndex == ???) { 
     [self.tableView reloadData]; 
    } 
} 
...