Я пытаюсь использовать 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
контроллер от новых опций файла)
Вам необходимо согласовать свой класс с протоколами UITableViewDelegate
и UITableViewDataSource
. ( cellForRowAtIndexPath:
находится в протоколе UITableViewDataSource
)
Сделайте это, используя угловые скобки в определении интерфейса вашего класса:
@interface myViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {...}
Причина, по которой вы получаете это предупреждение сейчас, а не раньше, когда вы использовали UITableViewController
, потому что UITableViewController
уже соответствует этим протоколам.
Таким образом, по сути, UITableViewController
- это просто класс, который соответствует UITableViewDelegate
и UITableViewDataSource
, и имеет член экземпляра UITableView
. .
Это почти все.
Конечно, если вы еще не создали подкласс UITableViewController
, вам необходимо вручную настроить dataSource
и делегат
для UITableView
:
[tableView setDelegate:self];
[tableView setDataSource:self];
Предупреждение просто сообщает вам, что ваш раздел @interface
должен объявлять, что вы реализуете протокол UITableViewDelegate
:
@interface MyUIViewController : UIViewController < UITableViewDelegate >
Вы также должны установить для делегата dataSource значение self:
[tableView setDelegate:self];
[tableView setDataSource:self];
или, в равной степени:
tableview.delegate = self;
tableview.dataSource = self;