return cell;

}

Теперь, если запустить приложение в эмуляторе iPhone, мы увидим результат работы (рис. 4.2).

Рис. 4.2. Обычный табличный вид с тремя разделами

Когда табличный вид перезагружается или обновляется, он запрашивает источник данных через протокол UITableViewDataSource, требуя у источника данных различную информацию. В первую очередь он запросит количество разделов. Каждый раздел должен содержать строки или ячейки.

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

Табличный вид, определив количество ячеек в разделах, продолжит запрашивать источник данных о видах — один такой вид соответствует каждой ячейке того или иного раздела. Вы можете выделять экземпляры класса UITableViewCell и возвращать их табличному виду. Разумеется, есть свойства, которые можно задать для каждой ячейки. Это, в частности, заголовок, подзаголовок и цвет ячейки.

<p>4.2. Использование дополнительных элементов в ячейке табличного вида</p><p>Постановка задачи</p>

Требуется привлечь внимание пользователя, отображая в таблице дополнительные элементы, и предложить альтернативные способы взаимодействия с каждой ячейкой в табличном виде.

<p>Решение</p>

Используйте свойство accessoryType класса UITableViewCell. Экземпляры этого класса вы предоставляете табличному виду в объекте его источника данных:

— (UITableViewCell *) tableView:(UITableView *)tableView

cellForRowAtIndexPath:(NSIndexPath *)indexPath{

UITableViewCell* result = nil;

if ([tableView isEqual: self.myTableView]){

result = [tableView

dequeueReusableCellWithIdentifier: MyCellIdentifier

forIndexPath: indexPath];

result.textLabel.text =

[NSString stringWithFormat:@"Section %ld, Cell %ld",

(long)indexPath.section,

(long)indexPath.row];

result.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

}

return result;

}

— (NSInteger) tableView:(UITableView *)tableView

numberOfRowsInSection:(NSInteger)section{

return 10;

}

— (void)viewDidLoad{

[super viewDidLoad];

self.myTableView = [[UITableView alloc]

initWithFrame: self.view.bounds

style: UITableViewStylePlain];

[self.myTableView registerClass: [UITableViewCell class]

forCellReuseIdentifier: MyCellIdentifier];

self.myTableView.dataSource = self;

self.myTableView.autoresizingMask =

UIViewAutoresizingFlexibleWidth |

UIViewAutoresizingFlexibleHeight;

[self.view addSubview: self.myTableView];

}

<p>Обсуждение</p>

На рис. 4.3 показаны два этих дополнительных элемента в табличном виде. В первой строке мы видим индикатор подробного описания, а во второй — кнопку детализации.

Рис. 4.3. Две ячейки табличного вида с различными дополнительными элементами

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже