У меня была такая же проблема.Сначала я использовал решение Раффаэлло Коласанте и передал NO
на scrollRectToVisible:animated:
.Но потом я заметил, что этот метод обрабатывается в другом потоке.Вы должны проверить, вызываете ли вы [uitableview scrollRectToVisible: CGRectMake(0,0,1,1) animated:YES]
в главном потоке (все действия пользовательского интерфейса должны выполняться в основном потоке).Я изменяю свой код так, чтобы он вызывался в главном потоке.
С:
//method called not from main thread
...
[someObjectInstance setOptionalActions:optActions];
Кому:
//method called not from main thread
...
dispatch_async(dispatch_get_main_queue(), ^{
//now method called from main thread
[someObjectInstance setOptionalActions:optActions];
});
Примечание: (вызов setOptionalActions :) -> ( scrollRectToVisible: animated: )
Теперь проблема устранена.
PS Вместо использования Grand Central Dispatch (GCD) , вы можете использовать другой подход :
@implementation SomeObjectClass
...
- (void) setOptionalActions:(NSArray *) actionsArray {
... // handling of array
[myTableView scrollRectToVisible:CGRectMake(0,0,1,1) animated:YES];
}
...
@end
//method called not from main thread, but will be performed on main thread
[someObjectInstance performSelectorOnMainThread:@selector(setOptionalActions:) withObject:optionalActions waitUntilDone:NO];