2016-11-15 77 views
1

我有我試圖讓通用的iPhone應用程序。我有這樣的代碼:呈現在iPad上查看控制器只允許.Popover

let documentMenu = UIDocumentMenuViewController(documentTypes: [kUTTypeContent as String], inMode: .Import) 
documentMenu.modalPresentationStyle = .FormSheet 
documentMenu.delegate = self 
self.presentationContext.presentViewController(documentMenu, animated: true, completion: nil) 

self.presentationContext只是一個視圖控制器傳入類。

每次執行這段代碼時,出現此錯誤:

您的應用程序已經呈現出UIDocumentMenuViewController()。在當前特徵環境中,具有此樣式的UIDocumentMenuViewController的modalPresentationStyle是UIModalPresentationPopover。您必須通過視圖控制器的popoverPresentationController爲此彈出窗口提供位置信息。您必須提供sourceView和sourceRect或barButtonItem。如果在呈現視圖控制器該信息是不知道,則可以在UIPopoverPresentationControllerDelegate方法-prepareForPopoverPresentation提供它。

我不確定發生了什麼事。我甚至試圖設置sourceViewsourceRect,但是,它將停止錯誤,但它將DocumentMenuViewController堅持popover,我不是什麼。我需要在屏幕中心呈現這個模態。任何幫助表示讚賞。

回答

1

問題在於UIDocumentMenuViewController不想顯示爲更小的「popover」演示文稿樣式。它自己的執行將覆蓋其modalPresentationStyle.Popover的任何設置。因此,您最終忽略將樣式設置爲.FormSheet的嘗試。

這是導致錯誤的原因。一旦樣式爲.Popover,您必須執行錯誤狀態並設置一些適當的組合sourceViewsourceRectbarButtonItem

向Apple提交增強請求以支持其他模式演示文稿樣式。與此同時,您需要調整您的用戶界面。

+0

我不建議你錯了,但沒有任何文件來支持你的要求? – crizzwald

+0

不幸的是沒有。我的答案是基於'UIDocumentMenuViewController'的實踐經驗,你的問題和你自己的經驗相匹配。 – rmaddy