2012-06-18 5 views
0

У меня есть ряд связанных вопросов, связанных с использованием AVExportSession. Я прекрасно понимаю, что я мог бы попытаться сделать это неправильно, но попробовал пару решений безрезультатно.AVExportSession изменение вида по завершении

Я экспортирую композицию с использованием AVExportSession, а затем используя обработчик завершения для запуска другого кода после его завершения (должно быть в течение 3 секунд обычно). Проблема возникает, когда я хочу изменить представление при завершении. Например, у меня есть кнопка в модальном представлении, которая запускает экспорт аудио, но я бы хотел, чтобы он впоследствии закрыл представление при завершении. Сообщение об ошибке, которое я получаю, совершенно очевидно - «Это может быть результатом вызова в UIKit из вторичного потока».

NSURL *exportURL = [NSURL fileURLWithPath:saveSong]; 
exportSession.outputURL = exportURL; 
exportSession.outputFileType = @"com.apple.m4a-audio"; 
[exportSession exportAsynchronouslyWithCompletionHandler:^{ 
    if (AVAssetExportSessionStatusCompleted == exportSession.status) { 
     NSLog(@"AVAssetExportSessionStatusCompleted"); 



     [[NSNotificationCenter defaultCenter] 
     postNotificationName:@"end" 
     object:self]; 



    } else if (AVAssetExportSessionStatusFailed == exportSession.status) { 
     // a failure may happen because of an event out of your control 
     // for example, an interruption like a phone call comming in 
     // make sure and handle this case appropriately 
     NSLog(@"AVAssetExportSessionStatusFailed"); 
    } else { 
     NSLog(@"Export Session Status: %d", exportSession.status); 
    } 
}]; 

Моя текущая попытка предполагает отправку NSNotification, чтобы закрыть окно в попытке прыгнуть на основной поток.

Очень жаль, если это кажется неясным - часть проблемы, которую я испытываю в поиске решения, заключается в том, чтобы выразить то, что происходит не так. Надеюсь, что, опубликовав мою неудачную попытку описания, у кого-то может быть точно правильный вопрос, чтобы спросить меня и, таким образом, ключ к ответу!

Это также происходит как ответвление другой проблемы, которую я пытаюсь решить. Когда я запускаю экспорт, я показываю анимированный UIActivityView, но при попытке скрыть по завершении, примерно через 20 секунд после завершения (NSLog-ed), что UIActivityView, наконец, скрывает

ответ

0

Решение: используйте [self performSelectorOnMainThread: @ селектор (stopActivityIndicator) withObject: nil waitUntilDone: YES];

затем позвоните мне или войдите, чтобы перевести мероприятие - вещи из - (void) stopActivityIndicator

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