2016-11-15 2 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(). В своей текущей характеристике среда modalPresentationStyle UIDocumentMenuViewController с этим стилем - UIModalPresentationPopover. Вы должны предоставить информацию о местоположении для этого popover через popoverPresentationController контроллера просмотра. Вы должны указать либо sourceView, и sourceRect, либо barButtonItem. Если эта информация неизвестна при представлении контроллера вида, вы можете предоставить ее в методе UIPopoverPresentationControllerDelegate -prepareForPopoverPresentation.

Я не уверен, что происходит. Я даже попытался установить sourceView и sourceRect, в котором останавливается ошибка, однако он вставляет DocumentMenuViewController в popover, я не так. Мне нужно это модально представлено в центре экрана. Любая помощь приветствуется.

ответ

1

Проблема заключается в том, что UIDocumentMenuViewController не хочет отображаться как нечто иное, чем меньший стиль презентации «popover». Его собственная реализация отменяет любые настройки его modalPresentationStyle до .Popover. Поэтому ваша попытка установить стиль на .FormSheet в конечном счете проигнорирована.

Это и является причиной ошибки. Как только стиль будет .Popover, вы должны сделать то, что ошибка, и установить соответствующую комбинацию из sourceView и sourceRect или barButtonItem.

Отправьте запрос об улучшении с помощью Apple, чтобы разрешить поддержку других модальных стилей презентации. Тем временем вам нужно настроить свой пользовательский интерфейс.

+0

Я не утверждаю, что вы ошибаетесь, но есть ли какие-либо документы, подтверждающие ваше требование? – crizzwald

+0

К сожалению, нет. Мой ответ основан на практическом опыте с 'UIDocumentMenuViewController', и ваш собственный опыт из вашего вопроса соответствует тому, что я видел. – rmaddy

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