Ответ 1
Хорошо, основная идея заключается в том, что при нажатии кнопки редактирования мы будем отображать элементы управления удалением рядом с каждой строкой и добавить новую строку с помощью элемента управления add, чтобы пользователи могли щелкнуть его, чтобы добавить право на запись? Во-первых, поскольку у вас есть кнопка настройки редактирования, уже разрешайте нашей таблице, что в режиме редактирования мы должны показать дополнительную строку. Мы делаем это в нашем tableView:numberOfRowsInSection
:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.editing ? a_recs.count + 1 : a_recs.count;
}
a_recs
Вот массив, который я настроил для хранения наших записей, поэтому вам придется переключать его с помощью собственного массива. Затем мы расскажем нашему tableView:cellForRowAtIndexPath:
, что делать с дополнительной строкой:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"Cell";
BOOL b_addCell = (indexPath.row == a_recs.count);
if (b_addCell) // set identifier for add row
CellIdentifier = @"AddCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
if (!b_addCell) {
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
}
if (b_addCell)
cell.textLabel.text = @"Add ...";
else
cell.textLabel.text = [a_recs objectAtIndex:indexPath.row];
return cell;
}
Мы также хотим проинструктировать нашу таблицу, что для этой строки добавления мы хотим добавить значок:
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == a_recs.count)
return UITableViewCellEditingStyleInsert;
else
return UITableViewCellEditingStyleDelete;
}
Масло. Теперь супер секретный сок кунг-фу, который держит его вместе с палочками для еды:
-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
if(editing) {
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:a_recs.count inSection:0]] withRowAnimation:UITableViewRowAnimationLeft];
[self.tableView endUpdates];
} else {
[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:a_recs.count inSection:0]] withRowAnimation:UITableViewRowAnimationLeft];
[self.tableView endUpdates];
// place here anything else to do when the done button is clicked
}
}
Удачи и приятного аппетита!