2015-03-26 2 views
1

Я пытаюсь получить стандартное поведение множественного выбора для UITableView, как в системе Mail.app и Messages.app, когда в папке «Входящие» нажата правая кнопка. Я устанавливаю allowsMultipleSelectionDuringEditing в YES, и я вызываю [self.tableView setEditing:YES animated:YES], когда нажата кнопка редактирования. Однако все остается по-прежнему, и открытые круги не выходят из левой стороны ячейки, как я их хочу. Я не устанавливаю ни один из UTCableViewCells accessoryType или звоню setEditing на любом из них, как есть.UITableView, не показывающий многократные круги выбора левой стороны при редактировании

Есть ли что-либо, что у меня отсутствует, или что-то еще, что я должен сделать? Чтобы быть ясным, я ищу левую функцию множественного выбора, а не плавающие галочки, которые могут отображаться в правой части ячейки. Спасибо

Редактировать: Я только что понял, что должен указать, что я не использую табличный вид в UITableViewController, а скорее тот, который помещен в UIViewController. Я не могу получить эту функциональность, не используя UITableViewController?

+0

У меня есть проголосовавшие urs надежду получить его обратно в свой ответ тоже, и вы тоже можете принять его –

ответ

0

Попробуйте использовать этот

- (void)viewDidLoad 
{ 
self.navigationItem.rightBarButtonItem = self.editButtonItem; 

} 


- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 
    [tableView setEditing:editing animated:YES]; 
    if (editing) { 
     addButton.enabled = NO; 
    } else { 
     addButton.enabled = YES; 
    } 
} 

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    SimpleEditableListAppDelegate *controller = (SimpleEditableListAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    if (indexPath.row == [controller countOfList]-1) { 
     return UITableViewCellEditingStyleInsert; 
    } else { 
     return UITableViewCellEditingStyleDelete; 
    } 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    // If row is deleted, remove it from the list. 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     SimpleEditableListAppDelegate *controller = (SimpleEditableListAppDelegate *)[[UIApplication sharedApplication] delegate]; 
     [controller removeObjectFromListAtIndex:indexPath.row]; 
     [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
    } 
} 
+0

Спасибо за ваш ответ. Хотя это был не совсем ответ, ваш код с некоторыми методами источников данных помог мне наткнуться на решение. Ура! – hellfireboy

+0

Вы можете в любой момент опубликовать свой код. Я хочу изучить код, который вы используете –

0

Решено!

Оказалось, что я неправильно возвращаю YES для метода источника данных canEditRowAtIndexPath. Таким образом, похоже, что множественный выбор отличается (флажки с правой стороны по сравнению с флажками выбора левого бокового круга) в зависимости от того, знает ли табличный вид, что он может редактировать.

Смежные вопросы