2010-01-20 3 views
5

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

Я хочу, чтобы таблица (на предыдущемUIViewController) перезагружала свои данные, когда выполняется обработка изображений.

Как я могу это сделать?

спасбросков метод называется так:

[self performSelectorInBackground:@selector(saveImage) withObject:nil]; 
[self.navigationController popViewControllerAnimated:YES]; 

ответ

9

В вашем методе saveImage отправьте уведомление сразу после окончания сохранения изображения и перед возвратом из метода. Что-то вроде этого:

// post notification 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ImageSaved" object:nil]; 

В обработке таблицы контроллера, осуществлять

- (void) imageSaved:(NSNotification *)notification{ 

    [self.tableView reloadData]; 

} 

и его метод viewDidLoad добавить следующий код для регистрации уведомлений:

[[NSNotificationCenter defaultCenter] addObserver:self 
           selector:@selector(imageSaved:) 
               name:@"ImageSaved" object:nil]; 

наконец, незарегистрированный в приложении dealloc добавление

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
+0

Отлично, спасибо. – McDJ

2

Я думаю, что путь является вызовом метода в конце подпрограммы saveImage. Может быть что-то вроде

[self performSelectorInBackground:@selector(saveImage) withObject:previousView]; 

И если вы хотите сохранить saveImage агностик, создать протокол с обратным вызовом, что ваш previousView может использовать.

@protocol processingFinishedDelegate 
-(void)processingFinished; 
@end 

так В конце saveImage вы будете иметь:

[(id<processingFinishedDelegate>)object processingFinished]; 

и, конечно, ваш интерфейс класса previousView должен обрабатывать делегат.

0

У меня возникли проблемы с этим, чтобы обновить UITextView с предложенным подходом «непрощенный». Я пробовал пару разных способов, но все не удалось ... Я также пробовал уведомления + наблюдатели с этим, но не успел ... Почему? Он отлично работает на UILabel, но без UITextView с этим сообщением:

Пробовал получить веб-блокировку из нити, отличной от основной нити или веб-нити. Это может быть результатом вызова UIKit из вторичного потока. Сбой сейчас ...

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