У меня есть tableView с 6 строками, выполненными с пользовательской ячейкой.viewWithTag: возвращает nil после reloadData
Пользовательская ячейка имеет UILabel и UISwitch. В методе «cellForRowAtIndexPath:» У меня есть:
static NSString *CellIdentifier = @"optionsCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
UISwitch *optionsSwitch = (UISwitch *)[cell viewWithTag:300];
UILabel *optionsLabel = (UILabel *) [cell viewWithTag:200];
NSLog(@"%@", optionsSwitch);
NSLog(@"%@", optionsLabel);
Когда Tableview сначала обрабатывается (от раскадровки) я правильно получить два объекта (я добавляя результат только для первой строки таблицы вид):
, но когда я посылаю метод reloadData к Tableview (статус UISwitch может быть изменен программно, так что я обновить TableView перед показом его) я правильно получить UILabel пока UISwitch равна нулю:
Почему UILabel работает и UISwitch нет?
UISizeClasses не включен, как предлагается в другом сообщении относительно этой проблемы.
Спасибо, Corrado
На самом деле я не меняю тег: тег назначается только в «cellForRowAtIndexPath:» на основе indexPath.row. Для целей тестирования я даже не изменяю статус или что-либо еще из UISwitch ... Я просто перезаряжаю табличное представление, ничего не меняя. – Corrado
'тег назначается только в" cellForRowAtIndexPath: "на основе indexPath.row' - это проблема, вы не можете этого сделать, а затем повторно использовать ячейку ... – Wain
вы правы, спасибо! – Corrado