Как использовать методы UIScrollViewDelegate для tableView, добавленного в UIViewController?

как мы можем использовать методы UIScrollViewDelegate для tableView, добавленного в UIViewController? Он отлично работает, когда я создаю подкласс UITableViewController, но в моем случае tableView добавляется внутри UIViewController. Делегат и источник данных связаны с self, я добавил UIScrollViewDelegate в качестве протокола, но методы делегата не распознаются viewController.

Спасибо


person Paul    schedule 13.03.2015    source источник


Ответы (2)


UITableViewDelegate наследуется от UIScrollViewDelegate. Если вы определите, что объект является делегатом табличного представления, он также будет делегатом scrollView.

person Pavel Gatilov    schedule 13.03.2015
comment
Спасибо, у меня действительно есть ошибка Xcode. Методы не автодополняются, но они принимаются, если я пишу весь метод. - person Paul; 13.03.2015
comment
@Paul, это нормальная работа для xCode - не показывать все методы дерева наследования. - person Pavel Gatilov; 13.03.2015

Вот как это сделать в два этапа:

ViewController.h

Ваш UIViewController должен реализовывать как UITableViewDelegate, так и UIScrollViewDelegate. Если вы работаете с конструктором интерфейсов, у вас также будет IBOutlet для UITableView:

@interface ViewController : UIViewController<UITableViewDelegate, UIScrollViewDelegate>

@property (strong, nonatomic) IBOutlet UITableView *tableView;

ViewController.m

В вашем коде реализации вы должны указать, что ViewController является делегатом tableview. Вам также необходимо реализовать один из методов делегата UIScrollView, чтобы получать уведомления о прокрутке:

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.delegate = self;
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"Scrollview did scroll");
}
person Dennis    schedule 13.03.2015
comment
Спасибо, у меня действительно есть ошибка Xcode. Методы не автодополняются, но они принимаются, если я пишу весь метод. - person Paul; 13.03.2015
comment
Тогда мой ответ был полезен? - person Dennis; 13.03.2015
comment
Спасибо Денис за поддержку, но я уже сделал это. Когда вы впервые пишете письма, xcode дает вам то, что доступно, и в моем случае xcode глючил. Так что я думал, что методы не были доступны. - person Paul; 13.03.2015