Ситуация, когда каждый раз добавляется пользовательская кнопка в ряд
Задача:
- Добавить пользовательскую кнопку под названием
Delete
в ряд всякий раз, когда он выбрал И удаляйте его всякий раз, когда изменяется выборка ячеек, и так далее добавляйте "Удалить" к последнему выбору
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{ self.myIndexPath=indexPath; UIButton *btnCustomDelete=[[UIButton alloc] initWithFrame:CGRectMake(260, 10, 60, 7)]; [btnCustomDelete setTitle:@"Delete" forState:UIControlStateNormal]; [tblCellForContactTable.contentView addSubview: btnCustomDelete]; //I think correction wants here [btnCustomDelete addTarget:self action:@selector(actionCustomDelete:) forControlEvents:UIControlEventTouchUpInside]; } -(IBAction) actionCustomDelete:(id)sender{ [arrForMyContacts removeObject:[arrForMyContacts objectAtIndex:myIndexPath.row]]; [tblForContacts reloadData]; }
Но, это не сработало все время.
1 ответ
Решение
Вы правы. Вы должны добавить кнопку в качестве подпредставления к вашей фактической UITableViewCell
объект, которого вы можете достичь с помощью tableView:cellForRowAtIndexPath:
метод источника данных.
Таким образом, ваша реализация может быть что-то вроде (после создания вашего btnCustomDelete
):
UITableViewCell * myCell = [tableView cellForRowAtIndexPath:indexPath]
[myCell.contentView addSubview:btnCustomDelete];
Пожалуйста, продолжайте читать.
Ваша реализация не является здоровым решением для удаления строки из таблицы. Вы можете легко удалить действие с помощью некоторых UITableView
методы источника данных и делегата, без добавления пользовательской кнопки, как показано ниже:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
[arrForMyContacts removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}