2011-01-18 2 views
1

Я изучаю, как использовать UITableView и UITableViewController в iOS, и я думаю, что, возможно, я запутался. Я создал простой TableView, и у меня есть 2 раздела. Ничего сложного.Понимание делегатов в UITableView и UITableViewController

У меня есть следующий определен и строит отлично:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 2; 
} 

- (NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section 
{ 
    // Section is going to be either 0 or 1, high or low 
    if (section == 0) { 
     return 1; 
    } 
    else { 
     return 2; 
    } 
} 

Однако то, что я не понимаю, определение методов. Оба метода должны возвращать целое число, поэтому я понимаю начало (NSInteger). numberOfRowsInSection начинается с tableView: (UITableView *) tableView и я не понимаю, почему?

Я новичок в программировании iOS, поэтому будьте нежны :-) Вся помощь очень ценится.

Майк

ответ

0

Это соглашение об именах Apple для методов делегирования и источника данных. numberOfSectionsInTableView: не имеет аргументов, кроме представления таблицы, поэтому аргумент добавляется в конце. tableView: numberOfRowsInSection: принимает другой аргумент - индекс рассматриваемого раздела. Apple решила, что когда есть другие аргументы, вызывающий объект должен идти первым, и аргументы приходят после этого.

+0

благодарит за комментарии. – hydev

0

Отъезд UITableViewController Class Reference

- (NSInteger)tableView:(UITableView *)tableView 

Первая часть, NSInteger позволяет вам знать, что вам нужно, чтобы вернуть номер return 1;, вторая часть (UITableView *)tableView позволяет вам знать, что вы имеете дело с Класс UITableView.

+0

благодарит за комментарии. – hydev

1

Имя метода: «tableView: numberOfRowsInSection:». Первый аргумент - это экземпляр, если UITableView запрашивает источник данных для количества строк в определенном разделе. Это полезное соглашение, поскольку у вас может быть один объект, действующий как источник данных для многих представлений таблиц, или вы хотите каким-то образом обновить представление таблицы при вызове метода делегата. Передавая вызывающий объект делегату, вы избегаете необходимости предоставления делегату дополнительной ссылки на этот объект.

Ознакомьтесь с методами делегата NSURLConnection, использующими аутентификацию, для примера того, где это действительно необходимо.

+0

благодарит за комментарии. – hydev

1

tableView:(UITableView *)tableView полезно, если вам нужно знать который tableView отправил этот метод делегата.

+0

благодарит за комментарии. – hydev

Смежные вопросы