У меня была та же проблема, и я получил некоторые идеи из ответов выше, чтобы исправить ее, но не только приложение аварийно завершает работу, если я хочу обновить во время прокрутки табличного представления, но также оно падает, если я прокручиваю, пока оно обновляется. Таким образом, расширенное решение для устранения проблемы при любых обстоятельствах:
1,1. Отключите прокрутку, если пользователь нажал кнопку обновления
1.2. Включить прокрутку после завершения процесса обновления
2,1. Отключите кнопку обновления, если пользователь прокручивает
2.2. Включите кнопку обновления, когда пользователь закончит прокрутку
Для реализации первой части (1.1. И 1.2.):
-(void)startReloading:(id)sender
{
...
self.tableView.userInteractionEnabled = NO;
// and the rest of the method implementation
}
-(void)stopReloading:(id)sender
{
self.tableView.userInteractionEnabled = YES;
// and the rest of the method implementation
}
Для реализации второй части (2.1. И 2.2.):
- (void)scrollViewWillBeginDragging:(UIScrollView *)activeScrollView
{
barButton.enabled = NO;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
barButton.enabled = YES;
}
И, как объяснялось в предыдущем ответе, UISCrollViewDelegate
необходимо установить в файле .h
:
@interface MyTableViewController : UITableViewController <UIScrollViewDelegate>
P.S. Вы можете использовать scrollEnabled
вместо userInteractionEnabled
, но все зависит от того, что вы делаете, но предпочтительным вариантом является userInteraction.