完成时AVExportSession更改视图

时间:2012-06-18 23:02:10

标签: iphone ios xcode interface-builder

我使用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最终隐藏

1 个答案:

答案 0 :(得分:0)

解决方案:使用[self performSelectorOnMainThread:@selector(stopActivityIndi​​cator)withObject:nil waitUntilDone:YES];

然后从 - (void)stopActivityIndi​​cator

调用我的视图更改/活动指示符