Как установить и исключить из очереди пользовательский UITableViewCell с идентификатором динамического повторного испольIOS

Программируем под IOS
Ответить
Anonymous
 Как установить и исключить из очереди пользовательский UITableViewCell с идентификатором динамического повторного исполь

Сообщение Anonymous »

Вот что я пытаюсь сделать в конечном итоге. Я хочу отображать меню элементов в UITableView, но динамически, чтобы тип отображаемого элемента определял загруженное пользовательское представление ячейки. Например, предположим, что тип пункта меню — «переключатель», затем он загрузит перо с именем «switch.xib», и состояние будет включено/выключено в зависимости от значения этого конкретного пункта меню. Может быть 5 элементов типа «переключатель», но с разными значениями. Поэтому я хочу использовать один и тот же xib для каждого из них, но в 5 экземплярах.

Итак, долгий путь к вопросу. Когда я загружаю представление ячейки из пера, я думаю, что ему потребуются уникальные идентификаторы повторного использования для удаления из очереди, когда оно прокручивается обратно на экране, не так ли? (Уникально для каждого экземпляра, т. е. каждого пункта меню.) В UITableViewCell в Interface Builder я вижу, где можно установить свойство идентификатора повторного использования, но я хочу установить его во время выполнения для каждого экземпляра переключателя. Например, пункт меню №1 — это переключатель, №2 — текстовое поле, №3 — переключатель и т. д. Таким образом, для вывода из очереди №1 и №3 необходимы уникальные идентификаторы ячеек.

Вот как выглядит мой cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Cells are unique; dequeue individual cells not generic cell formats
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d", indexPath.row];

ITMenuItem *menuItem = [menu.menuItems objectAtIndex:indexPath.row];

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// Load cell view from nib
NSString *cellNib = [NSString stringWithFormat:@"MenuCell_%@", menuItem.type];
[[NSBundle mainBundle] loadNibNamed:cellNib owner:self options:nil];
cell = myCell;
self.myCell = nil;
}
// Display menu item contents in cell
UILabel *cellLabel = (UILabel *) [cell viewWithTag:1];
[cellLabel setText:menuItem.name];
if ([menuItem.type isEqualToString:@"switch"]) {
UISwitch *cellSwitch = (UISwitch *) [cell viewWithTag:2];
[cellSwitch setOn:[menuItem.value isEqualToString:@"YES"]];
}
else if ([menuItem.type isEqualToString:@"text"]) {
UITextField *textField = (UITextField *) [cell viewWithTag:2];
[textField setText:menuItem.value];
}

return cell;
}


Подробнее здесь: https://stackoverflow.com/questions/133 ... identifier
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»