TableView reloadData не обновляет интерфейс в iPad, но работает в iPhone
У меня странная ошибка. я использую UITableView
который должен быть перезагружен при выборе строки. Это прекрасно работает в симуляторе iPhone. Пока работает в iPad, didSelectRowAtIndexPath
вызывается, но пользовательский интерфейс не обновляется. Я пытался вызвать метод reloadData
в основной теме. Это все то же самое.
Я пробовал различные решения в stackru. Ничто, казалось, не решало мою проблему.
ОБНОВИТЬ
Когда я выберу ячейку, будет добавлена новая ячейка. Поэтому мне нужно перезагрузить мой просмотр таблицы, чтобы отобразить динамическое изменение. Разместил мой код ниже
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
{
NSUInteger count=indexPath.row+1;
NSMutableArray *insertIndexPaths = [NSMutableArray array];
[insertIndexPaths addObject:[NSIndexPath indexPathForRow:count inSection:indexPath.section]];
switch (indexPath.row) {
case 0:
{
if ([ItemsInSection[indexPath.section] count]==1){
[ItemsInSection[indexPath.section] addObject:obj2];
[TabView beginUpdates];
[TabView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];
[TabView endUpdates];
}
else {
[ItemsInSection[indexPath.section] removeAllObjects];
[ItemsInSection[indexPath.section] addObject:obj1];
[self.TabView reloadData];
}
}
break;
case 1:
{if ([ItemsInSection[indexPath.section] count]==2){
[ItemsInSection[indexPath.section] addObject:obj3];
[self.TabView beginUpdates];
[TabView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];
[self.TabView endUpdates];
}
else
{
[ItemsInSection[indexPath.section] removeAllObjects];
[ItemsInSection[indexPath.section] addObject:obj1];
[ItemsInSection[indexPath.section] addObject:obj2];
[self.TabView reloadData];
}
}
break;
case 2: {
if ([ItemsInSection[indexPath.section] count]==3) {
[ItemsInSection[indexPath.section] addObject:obj4];
[self.TabView beginUpdates];
[TabView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];
[self.TabView endUpdates];
}
else
{
[ItemsInSection[indexPath.section] removeObject:obj4];
[self.TabView beginUpdates];
[TabView deleteRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];
[self.TabView endUpdates];
}
}
break;
default:
break;
}
}
2 ответа
Я нашел решение для этой проблемы. Цвет фона UITableViewCell
был установлен, чтобы очистить цвет и цвет фона UIView
на UITableViewCell
также был установлен, чтобы очистить цвет. Изменение этих настроек отображало вставку строк в UITableView
в симуляторе iPad.
Вы перезагружаете табличное представление внутри делегата табличного представления. У метода делегата выбора табличного представления есть связанный процесс выбора анимации. Поэтому я предлагаю вам переместить весь код внутри этого метода в отдельный метод. и вызвать этот метод.
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(),^{
[self.aiTableView beginUpdates];
// your table view selection code
[self.aiTableView endUpdates];
});