как установить делегата tableview

Я пытаюсь использовать a UITableView не используя перо и не используя a UITableViewController.

Я добавил a UITableView экземпляр к a UIViewController Как так

mytable = [[UITableView alloc] initWithFrame:CGRectMake(22, 207, 270, 233)];
[mytable setDelegate:self];
[self.view mytable];

Также я добавил методы просмотра следующей таблицы для моего UIViewController (сокращение для пользы краткости)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

Я получаю предупреждение, говоря что мой UIViewController не реализует UITableView протокол делегата.

Что корректный путь состоит в том, чтобы сказать табличному представлению, где его методы делегата?

(Это - моя первая попытка попытки использовать a UITableView не выбирая UITableTableview контроллер от новых опций файла)

12
задан Jacob Relkin 25 March 2013 в 07:47
поделиться

3 ответа

Вам необходимо согласовать свой класс с протоколами UITableViewDelegate и UITableViewDataSource . ( cellForRowAtIndexPath: находится в протоколе UITableViewDataSource )

Сделайте это, используя угловые скобки в определении интерфейса вашего класса:

@interface myViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {...}

Причина, по которой вы получаете это предупреждение сейчас, а не раньше, когда вы использовали UITableViewController , потому что UITableViewController уже соответствует этим протоколам.

Таким образом, по сути, UITableViewController - это просто класс, который соответствует UITableViewDelegate и UITableViewDataSource , и имеет член экземпляра UITableView . . Это почти все.

Конечно, если вы еще не создали подкласс UITableViewController , вам необходимо вручную настроить dataSource и делегат для UITableView :

[tableView setDelegate:self];
[tableView setDataSource:self];
29
ответ дан 2 December 2019 в 03:16
поделиться

Предупреждение просто сообщает вам, что ваш раздел @interface должен объявлять, что вы реализуете протокол UITableViewDelegate :

@interface MyUIViewController : UIViewController < UITableViewDelegate >
1
ответ дан 2 December 2019 в 03:16
поделиться

Вы также должны установить для делегата dataSource значение self:

[tableView setDelegate:self];
[tableView setDataSource:self];

или, в равной степени:

tableview.delegate = self;
tableview.dataSource = self;
16
ответ дан 2 December 2019 в 03:16
поделиться