it-roy-ru.com

Режим редактирования UITableView

У меня есть UITableView, и я пытаюсь загрузить его по умолчанию в режиме редактирования. Проблема в том, что когда я эту строку table.editing=TRUE; мои строки исчезают, я реализовал следующие методы:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{
// Return NO if you do not want the specified item to be editable.
return YES;
}

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


 - (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath 
 {
 return NO;
 }

но без удачи. Что я должен делать?

41
user739509

asAnishуказал на использование

[tableView setEditing: YES animated: YES]; 

Но вам нужно иметь его в событии просмотра viewWillAppear, чтобы оно работало.

61
Ahmad Kayyali

попробуй это...

[tableView setEditing: YES animated: YES];
10
Anish

В ViewDidLoad написать

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style: UIBarButtonItemStyleBordered target:self action:@selector(addORDoneRows)];
[self.navigationItem setLeftBarButtonItem:addButton];

addORDoneRow

- (void)addORDoneRows
{
    if(self.editing)
    {
        [super setEditing:NO animated:NO];
        [_dbSongsTblView setEditing:NO animated:NO];
        [_dbSongsTblView reloadData];
        [self.navigationItem.leftBarButtonItem setTitle:@"Edit"];
        [self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStylePlain];
    }
    else
    {
        [super setEditing:YES animated:YES];
        [_dbSongsTblView setEditing:YES animated:YES];
        [_dbSongsTblView reloadData];
        [self.navigationItem.leftBarButtonItem setTitle:@"Done"];
        [self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStyleDone];
    }
}

Для множественного выбора строки

 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
    return YES;
}

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

Примечание: есть три стиля редактирования, как показано ниже

UITableViewCellEditingStyleNone,
UITableViewCellEditingStyleDelete,
UITableViewCellEditingStyleInsert

Примечание. И для множественного выделения выберите «Выбор и стиль редактирования» для «Несколько» из инспектора атрибутов

7
Hardik Thakkar

Чтобы загрузить tableView в режиме редактирования, вы должны вызвать setEditing(true, animated: false) в viewDidLoad().

Если ваш контроллер представления является подклассом UITableViewController, нет необходимости изменять, просто сделайте вышеуказанный вызов. В противном случае, если ваш контроллер представления является подклассом UIViewController, то вы должны сделать вызов следующим образом: tableView.setEditing(true, animated: true).

Проверено с Swift 2.2.

2
Andrej

[self.tableView setEditing:! self.tableView.isEditing animated: YES];

0
Georgy Brusnikin