UIDocumentMenuViewController在iPad上崩溃,但在iPhone上崩溃

时间:2016-06-07 07:51:44

标签: ios uicollectionview ios9 uidocumentmenuvc

提供UIDocumentMenuViewController以便能够将文件加载到应用中。在iPhone上它可以工作,但不适用于iPad。使用iOS9。知道什么是错的吗?

dmvc = UIDocumentMenuViewController(documentTypes: ["public.data"], inMode: .Import)
dmvc!.delegate = self
dmvc!.popoverPresentationController?.sourceView = addSongButton
self.presentViewController(dmvc!, animated: true, completion: nil)
  

2016-06-07 09:45:45.256记住[2994:977408]的行为   未定义UICollectionViewFlowLayout,因为:2016-06-07   09:45:45.260记住[2994:977408]项目宽度必须小于   UICollectionView的宽度减去左边的插图和   正确的值,减去内容的左右值。   2016-06-07 09:45:45.261记住[2994:977408]相关   UICollectionViewFlowLayout实例是   < _UIAlertControllerCollectionViewFlowLayout:0x1668e6e0>,它是   附属于   动画= {bounds.origin =;   bounds.size =;   位置=; }; layer =; contentOffset:{0,0}; contentSize:{0,0}>采集   视图布局:< _UIAlertControllerCollectionViewFlowLayout:0x1668e6e0>。   2016-06-07 09:45:45.262背诵[2994:977408]做一个象征性的   要捕获的UICollectionViewFlowLayoutBreakForInvalidSizes的断点   这在调试器中。

我不明白为什么错误消息会引用collectionView?我根本不使用collectionView。也许UIDocumentMenuViewController将它作为内部组件?

2 个答案:

答案 0 :(得分:4)

iPad有一些关于ActionSheets及其取消按钮的特殊规则,通常取决于您显示ActionSheets的位置,因此您可以通过以下方式解决崩溃问题:

     let importMenu = UIDocumentMenuViewController(documentTypes: [kUTTypeHTML as String ], in: .import)
    importMenu.delegate = self
    importMenu.modalPresentationStyle = .popover
    importMenu.popoverPresentationController?.sourceView = self.view
    self.present(importMenu, animated: true, completion: nil)

答案 1 :(得分:0)

我遇到了同样的问题。我设置了sourceView = self.view,并且必须创建一个sourceRect = theButton.frame。