Я создаю строку «Добавить новый элемент» в раздел в табличном представлении, который динамически добавляется / удаляется при входе / выходе из режима редактирования.Это работает нормально, однако, если таблица длиннее экрана, тогда метки для любых строк, которые еще не отображаются, не отображаются при прокрутке вниз, чтобы увидеть новую «строку добавления нового элемента».
Ключевые части моегокод:
setEditing ...
-(void)setEditing:(BOOL)editing animated:(BOOL)animate
{
[super setEditing:editing animated:animate];
[self.tableView setEditing:editing animated:animate];
NSArray *paths = [NSArray arrayWithObject:
[NSIndexPath indexPathForRow:[self.location.rooms count] inSection:kSectionRooms]];
if (editing)
{
[[self tableView] insertRowsAtIndexPaths:paths
withRowAnimation:UITableViewRowAnimationTop];
}
else {
[[self tableView] deleteRowsAtIndexPaths:paths
withRowAnimation:UITableViewRowAnimationTop];
}
}
numberOfRowsInSection ...
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
switch (section) {
case kSectionFields:
return NUM_SECTION_FIELDS_ROWS;
break;
case kSectionRooms:
return [location.rooms count] + ([self.tableView isEditing] ? 1 : 0);
break;
default:
return 0;
break;
}
return 0;
}
часть cellForRowAtIndexPath
if ([self.tableView isEditing] && row == location.rooms.count)
{
roomCell.textLabel.text = @"Add new room...";
}
else
{
roomCell.textLabel.text = [[loc.rooms objectAtIndex:row] name];
}
editStyleForRowAtIndexPath ....
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
switch ([indexPath section])
{
case kSectionFields:
return UITableViewCellEditingStyleNone;
break;
case kSectionRooms:
if ([indexPath row] == location.rooms.count && [self.tableView isEditing])
{
return UITableViewCellEditingStyleInsert;
}
else
{
return UITableViewCellEditingStyleDelete;
}
break;
}
return UITableViewCellEditingStyleNone;
}
Все они работают правильно, если нет прокрутки, но как только происходит прокрутка, у меня возникают проблемы.Я понимаю, что это должно быть связано с тем, что TableView не отображает скрытые строки и, следовательно, не прошел ленивый процесс загрузки.Я пытался использовать reloadData, но это не имеет значения (неудивительно), но, поскольку я новичок в этом, я не уверен в лучшем способе отображения строк.
Я уверен, что будет простое решениепоэтому любые идеи будут наиболее ценными!
Приветствия заранее
Jez