2012-03-14 81 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发送等效消息,或者其他任何消息。在做这件事之前,我会考虑三次,尽管......我试着让一个对象(视图控制器)负责与表格有关的所有事情。