проблемы с анимацией при редактировании uitableview - PullRequest
0 голосов
/ 29 августа 2011

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

Есть мысли?

- (IBAction) EditTable:(id)sender
{

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

}

PS: я также не уверен, зачем мне нужна эта строка: [super setEditing: NO animated: YES];но вещи просто не работают вообще без этого.Я только что видел несколько примеров в Интернете, которые этого не делают.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 29 августа 2011

Возможно, вам не следует перезагружать данные при установке свойства редактирования.

Кстати, какой у тебя класс "супер"?Обычно вам не нужно вызывать [super setEditing: YES animated: YES];

0 голосов
/ 31 июля 2014

Попробуйте это:

@ Реализация YourViewController // Это может (должно) быть подклассом UITableViewController, чтобы облегчить вашу жизнь

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.rightBarButtonItem = self.editButtonItem; // Automatically calls setEditing:animated: and changes itself to "Edit"/"Done" between presses
}

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];

    if (editing == YES) {
        // Do stuff here
    } else {
        // Do stuff here
    }

    // Reload all sections of the table view
    // THIS IS THE PART YOU'RE INTERESTED IN
    NSRange range = NSMakeRange(0,[self.tableView numberOfSections]);
    NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
    [self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
}

Ознакомьтесь с документацией для комментариев по методам от Apple:)

0 голосов
/ 29 августа 2011

Это только кнопка, которая не анимирует должным образом?В любом случае вам, вероятно, следует использовать super.editButtonItem вместо своего собственного;он анимирован и просто установка текста и стиля таким образом (я считаю) не так.Что касается вызова супер, вы переопределяете один из методов редактирования и не вызываете супер метод изнутри?И ответ xuzhes о reloadData, я считаю, тоже правильный.

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