簡體   English   中英

獲取UIView的容器/ UIViewController

[英]getting the container/UIViewController of UIView

所以我有一個UIViewController A,它添加了一個UIView B作為子類。 UIView B有一個UITableView。 我希望UITableView scrollView委托在UIViewController A中。我該怎么做? 截至目前,scrollViewDidScroll委托在此UIView類中。 有沒有辦法使scrollViewDidScroll在viewController A中,並且只要滾動UIView中的UITableView就會調用它?

將tableView作為可從外部訪問的屬性。 你可以在ViewController A中設置它,如下所示:

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


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

結果是:您的ViewController是委托。

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

現在,您的表的委托沒有理由不能將有關滾動的消息轉發給其他對象。 當然,你必須自己設置它。 因此,當B獲取-scrollViewDidScroll:消息時,它可能會向A發送等效消息,或者其他任何消息。 在實際執行此操作之前,我會三思而行,但是......我會嘗試只有一個對象(視圖控制器)負責與表相關的所有事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM