我正在使用UIDocumentPickerViewController将图像导出到iOS 11中的Files应用程序。选择器出现了,我可以为文件选择目标。我收到文件被移动的回调,我可以在文件中看到它们,所以看起来工作正常。但是,UI是错误的 - 添加和取消按钮看起来已禁用,但它们实际上工作正常。如果我只使用共享表中的保存到文件,按钮看起来不会这样。
这是我的代码:
UIDocumentPickerViewController *docPicker =
[[UIDocumentPickerViewController alloc] initWithURLs:self.assetURLs inMode:UIDocumentPickerModeExportToService];
docPicker.delegate = self;
[vc presentViewController:docPicker animated:YES completion:nil];
我尝试过的事情:
1)我尝试了移动和导出类型
2)我启用了iCloud功能(所有三个项目:键值,文档和CloudKit) - 没有经验上的差异[事实上,即使没有这些设置,代码也能正常工作,尽管文档另有说法])
以下是UI的外观截图。正如您所看到的,用户界面表示它会将项目添加到所选目录中(事实上,如果我点击添加,则会这样做):
任何人都知道如何让按钮显示为蓝色并显示启用状态?我没有在网上找到任何可以尝试的示例代码 - 如果有人有指针,我可以尝试查看它是否与我的配置或代码有关。
答案 0 :(得分:2)
我不是像批准的答案中建议的那样暂时改变全球外观的忠实粉丝。你可以重置UIDocumentPickerViewController的外观,条形按钮将恢复原来的蓝色。
if #available(iOS 11.0, *) {
UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
}
答案 1 :(得分:1)
根据您的评论,您的应用正在使用tintColor
设置UINavigationBar.appearance
。这将影响所有导航栏,包括系统导航控制器,例如UIDocumentPickerViewController
。
我已经在自己的应用程序中处理了这个问题。一种解决方案是子类UIDocumentPickerViewController
并在需要选择器视图的任何地方使用您的子类。在您的子类中,覆盖viewDidLoad
并将UINavigationBar.appearance.tintColor
设置回nil
。并覆盖viewWillDisappear
以将UINavigationBar.appearance.tintColor
重置为所需的颜色。