2012-03-14 67 views
0

所以我有一個UIViewController A,它將UIView B添加爲子類。 UIView B有一個UITableView。我想UITableView scrollView委託在UIViewController中A.我該怎麼做?截至目前,scrollViewDidScroll委託在這個UIView類中。有沒有辦法讓scrollViewDidScroll在viewController A裏面,並且只要UIView中的UITableView滾動就調用它?獲取UIView的容器/ UIViewController

+0

的可能重複[成爲UITableView的UIScrollViewDelegate委託(http://stackoverflow.com/questions/1615345/become-uiscrollviewdelegate-delegate-for-uitableview) – Caleb 2012-03-14 21:44:03

回答

2

將tableView設置爲可從外部訪問的屬性。比你可以把它架在你的ViewController一個這樣的:

// ClassB.h 
@property (nonatomic, readonly) UITableView* tableView; 


// In your UIViewControllerA.m 
// in loadView: or anywhere else 
self.viewB.tableView.delegate = self; 

所以結果是:你的ViewController是委託。

+0

我有委派到B – xonegirlz 2012-03-14 21:09:39

+0

不,你不明白。我編輯了我的答案,使其更加清晰。 – calimarkus 2012-03-14 21:30:19

0

滾動視圖和表視圖是相同的對象 - 注意UITableView是UIScrollView的子類。該對象只有一個委託,而不是單獨的委託表和滾動的東西。另請注意,UITableViewDelegate採用UIScrollViewDelegate。因此,您設置爲表的委託的對象也將獲得UIScrollViewDelegate消息。

現在,沒有理由您的表的委託無法將有關滾動的消息轉發給其他對象。當然,你必須自己設定。所以,當B收到-scrollViewDidScroll:消息時,它可能會向A發送等效消息,或者其他任何消息。在做這件事之前,我會考慮三次,儘管......我試着讓一個對象(視圖控制器)負責與表格有關的所有事情。