2010-12-01 1 views
2

У меня есть UITableView. При нажатии кнопки я хочу отобразить собственное пользовательское представление, затем, как только вид будет виден, удалите определенный элемент из таблицы. Пользовательский вид скрывает представление таблицы, поэтому мне бы хотелось, чтобы удаление появилось после просмотра этого нового вида.Delay reloadData on UITableView

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

[self.view addSubview:customView]; 
[itemArray removeObject:object]; 
[self.tableView reloadData]; 

Как я могу задержать перезагрузку до тех пор, пока вид не будет виден?

Спасибо.

ответ

1

Вы упоминаете вы анимировать вид самостоятельно; Вы должны вызвать reloadData когда анимация завершается, используя что-то вроде:

[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(methodThatCallsReloadData)]; 

// or even 
[UIView setAnimationDelegate:self.tableView]; 
[UIView setAnimationDidStopSelector:@selector(reloadData)]; 

или если вы используете блок на основе API:

[UIView animateWithDuration:... completion:^(BOOL finished) { 
    [self.tableView reloadData]; 
}]; 
+0

Благодаря это прекрасно работает. Я бы предпочел блок API, но, поскольку его единственный 4.0+, мои 3.2 пользователи будут разбиваться – joec 2010-12-02 12:32:12

3

Попробуйте добавить reloadData к viewDidAppear:

-(void) viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.tableView reloadData]; 
} 

Это должно дать вам необходимую задержку.

1

или вы можете использовать метод performSelector:

[self performSelector:@selector(myOtherMethod) withObject:nil afterDelay:1.5]; 

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

  • Нет связанных вопросов^_^