2012-06-18 58 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:@選擇器(stopActivityIndi​​cator)withObject:nil waitUntilDone:YES];

然後調用我的視圖更改/活動指示器的東西從 - (void)stopActivityIndi​​cator