2010-06-07 3 views
12

Я знаю об использовании setEditing:, чтобы включить режим редактирования UITableView.Как отключить операцию удаления для определенной строки в UITableView?

Но я предпочитаю отключить операцию для некоторых определенных строк (включить другие строки).

Возможно ли это?

Спасибо,

Interdev

ответ

28

Реализовать в источнике данных the -tableView:canEditRowAtIndexPath: method. Верните NO для этих строк.

+1

Спасибо. Но я надеюсь, что некоторые строки (все строки могут быть перемещены) могут быть перемещены, а не удалены (некоторые строки отключены функцией удаления, другие включены), возможно ли это? – arachide

+0

@user: Используйте '-tableView: canMoveRowAtIndexPath:' для перемещения. – kennytm

+2

Спасибо. Я использовал - (BOOL) tableView: (UITableView *) tableview canMoveRowAtIndexPath: (NSIndexPath *) indexPath { \t \t return ДА; \t } - (BOOL) tableView: (UITableView *) tableView canEditRowAtIndexPath: (NSIndexPath *) indexPath; { \t NSInteger row = [indexPath row]; \t int vv = [[myArray objectAtIndex: row] isEditable]; \t if (! Vv) \t { \t return NO; \t} \t еще \t { \t \t возвращение ДА; \t \t } } , но похоже, что невозможно установить «разрешить перемещение» ячейки и «отключить удаление» одновременно. – arachide

8

Использование canEditRowAtIndexPath не позволит выравнивать строку с другими ячейками в сгруппированном стиле. который может выглядеть плохо.

Я использую UITableViewCellEditingStyleNone, для строк, которые вы не хотите, чтобы показать элемент редактирования (минус/плюс кнопка), это в вашем

(UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{} 
9

этот пост сумма его отлично, Is there any way to hide "-" (Delete) button while editing UITableView

в случае, если вы не хотите, чтобы прочитать пост сути находится на строку, которую вы не хотите удалить, но хотят разрешить перемещение строк: набору редактировать стиль для строки в UITableViewCellEditingStyleNone

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return UITableViewCellEditingStyleNone; 
} 
1

Основываясь на вашем вопросе, я понимаю, что вы хотите просто скрыть кнопку удаления, появляясь в 1-й строке. пожалуйста, настройте редактирование таблицы для да и добавьте код ниже

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 

    if(indexPath.row==0) 
    { 
     return NO; 
    } 
    return YES; 
} 
+0

Это работает, но также отключает перемещение строк. Если разрешить перемещение ячейки вместе с отключением решения кнопки удаления, предложенным @Youyou и http://stackoverflow.com/questions/2281394/uitableview-editable-rearrangeable-without-cells-beeing-deletable/2281456#2281456 от AlexC, лучший вариант для этого. – CuriousDev