Как сделать UITableView переставляемым? - PullRequest
5 голосов
/ 21 июля 2011

Я пытаюсь сделать мой UITableView редактируемым, чтобы вы могли перемещать ячейки.Прямо сейчас, когда я нажимаю кнопку редактирования, она позволяет мне только удалять, но не переупорядочивать.

У меня есть следующие методы:

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

- (void)setEditing:(BOOL)editing animated:(BOOL)animate
{
    [self.routineTableView setEditing: !self.routineTableView.editing animated:YES];

    if (self.routineTableView.editing)
        [self.navigationItem.leftBarButtonItem setTitle:@"Done"];
    else
        [self.navigationItem.leftBarButtonItem setTitle:@"Edit"];
}

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
 {
     if (editingStyle == UITableViewCellEditingStyleDelete) 
     {
         NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
         [context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
         NSLog(@"fetched results : \n%@\n",[self.fetchedResultsController fetchedObjects]);

         NSError *error = nil;

         if (![managedObjectContext save:&error]) 
         {
             // Handle the error.
         }
    }

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

Ответы [ 2 ]

8 голосов
/ 21 июля 2011

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

-(BOOL)tableView:(UITableView *)tableView
canMoveRowAtIndexPath:(NSIndexPath *)indexPath;
-(void)tableView:(UITableView *)tableView
moveRowAtIndexPath:(NSIndexPath *)fromIndexPath
       toIndexPath:(NSIndexPath *)toIndexPath;

, и его делегат может реализовать:

-(NSIndexPath *)tableView:(UITableView *)tableView
targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath
                     toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath;

. страница с примерами кода.

2 голосов
/ 21 июля 2011

Вы должны прочитать документацию . Вы также можете получить соответствующий пример кода там.

Когда табличное представление входит в режим редактирования и когда пользователи перетаскивают переупорядочение контроль, табличное представление отправляет серию сообщений в свой источник данных и делегировать, но только если они реализуют эти методы. Эти методы разрешить источник данных и делегат, чтобы ограничить ли и где строка можно также перемещать для выполнения фактической операции перемещения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...