[英]Dismiss two present ModalViewControllers (MPMediaPickerController and UIViewController) at the same time
解雇兩個modalviewcontrollers時遇到一個奇怪的問題。
我正在做的是我有一個viewControllers A和B。我在A上顯示MPMediaPickerController
。然后在BI上,在B上顯示MPMediaPickerController
。現在我的問題是在MPMediaPickerController中單擊“完成”按鈕后,它的委托方法正在調用。 我實現了以下代碼以關閉MPMediaPickerController
和Controller B,以便我們可以直接轉到ControllerA。
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES];
}
相同的代碼適用於ViewController A,B和C,但如果第三個是MPMediaPickerController
則MPMediaPickerController
任何想法或建議都非常有幫助。
為什么要使用dismissModalViewControllerAnimated
方法? 已過時,請改用dismissViewControllerAnimated
。
檢查以下代碼:
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
[self dismissViewControllerAnimated:YES completion:^{
[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
}];
}
每當您從控制器呈現MPMediaPickerController時,都必須將其代理設置為呈現控制器。 由於委托方法在呈現的視圖控制器內部,因此必須調用dismissModalViewControllerAnimated而不是正在執行的操作。 我只是將bool參數傳遞給NO,因為每當您嘗試同時解雇一個ViewController時,iOS會出現不平衡的過渡調用,這可能會阻止另一個調用。 因此,我只是不使用任何動畫就解雇了MPMediaPickerController,並使用動畫來呈現視圖控制器。
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
[self dismissModalViewControllerAnimated:NO];
[self.presentingViewController dismissModalViewControllerAnimated:YES];
}
您是否嘗試過以下代碼?
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
[mediaPicker dismissModalViewControllerAnimated:NO];
[self dismissModalViewControllerAnimated:YES];
}
謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.