我在Xcode 7.0 beta 6中使用Swift 2
长话短说,在使用文档选择器访问.navigationBar.barStyle (即UIDocumentPickerViewController )时,我正在尝试如何设置iCloud和UIDocumentPickerViewController。
我曾尝试过例如:
/...
documentPicker.navigationController!.navigationBar.barStyle = UIBarStyle.Default
documentPicker.navigationController!.navigationBar.tintColor = UIColor.orangeColor()
/...例如。这里,我在导航控制器中嵌入了一个视图控制器:

在MyNavigationController中,我可以将.barStyle和.tintStyle设置为:
class MyNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationBar.barStyle = UIBarStyle.Default
self.navigationBar.tintColor = UIColor.orangeColor()
}
}因此,.tintStyle是橙色的,如下所示:

iCloud已启用,FirstViewController符合UIDocumentPickerDelegate。bar按钮调用一个IBAction函数,如FirstViewController代码中所示
class FirstViewController: UIViewController, UIDocumentPickerDelegate {
// ...
@IBAction func importDocument(sender: UIBarButtonItem) {
let documentPicker: UIDocumentPickerViewController = UIDocumentPickerViewController(documentTypes: ["public.text"], inMode: UIDocumentPickerMode.Import)
documentPicker.delegate = self
documentPicker.modalPresentationStyle = UIModalPresentationStyle.FullScreen
documentPicker.popoverPresentationController?.barButtonItem = sender
self.presentViewController(documentPicker, animated: true, completion: nil)
}
func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
// ...
}
func documentPickerWasCancelled(controller: UIDocumentPickerViewController) {
// ...
}
}这是可行的。文档选择器按预期加载:

但。为了解决如何做到这一点,我希望菜单项“完成”为橙色。就像以前的一样。
我尝试将以下代码添加到@IBAction中,如下所示:
//...
documentPicker.navigationController!.navigationBar.barStyle = UIBarStyle.Default
documentPicker.navigationController!.navigationBar.tintColor = UIColor.orangeColor()
self.presentViewController(documentPicker, animated: true, completion: nil)
//...这不起作用,因为此时documentPicker.navigationController是nil。
有人能告诉我在这个周期中我如何或在哪里可以访问documentPicker.navigationController!.navigationBar.tintColor吗?
或者我遗漏了什么,还有别的方法改变菜单的颜色吗?
或者我应该创建一个自定义导航控制器和一个自定义文档选择器视图控制器。从理论上讲,我可以访问相关的viewDidLoad。我试过了,但意识到我还需要一个自定义版本的UIDocumentPickerDelegate协议。肯定有一个更容易的解决办法(我对是否允许这样做表示怀疑)。
发布于 2015-08-26 17:23:34
您可以通过navigationBar来改变UIAppearance的默认色调。
UINavigationBar.appearance().tintColor = UIColor.orangeColor()发布于 2018-03-14 09:34:04
swift 3,4和xcode 9+:
documentPicker.view.tintColor = .orangehttps://stackoverflow.com/questions/32230947
复制相似问题