Установка типа аксессуара UITableViewCell для некоторых ячеек, но не для всех
-
23-09-2019 - |
Вопрос
У меня есть 8 ячеек, которые создаются в моем UITableViewController.Я хотел бы знать, как я могу показать индикатор раскрытия на 4-й и 8-й ячейках.Прямо сейчас я строю это в
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
хотя я полностью осознаю, что в каждую ячейку будет добавлен индикатор раскрытия
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
Решение
Используйте простой оператор if:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
... // do whatever
UITableViewCellAccessoryType accessoryType = UITableViewCellAccessoryNone;
if (indexPath.row == 3 || indexPath.row == 7) {
accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
cell.accessoryType = accessoryType;
... // do whatever
}
Другие советы
Вы знаете indexPath, так почему бы просто условно не применить индикатор раскрытия, когда
if((indexPath.row == 3) || (indexPath.row == 7))
?
(indexPath.row, конечно, основан на 0...4-е — 3, а 8-е — 7.И вам также следует использовать #defines или какой-либо другой способ избежать попадания туда магических чисел.)
Не связан с StackOverflow