navigationBar .tintColor 与 UIDocumentPickerViewController(文档选择器)?
navigationBar .tintColor with UIDocumentPickerViewController (Document Picker)?
我在 Xcode 7.0 beta 6
中使用 Swift 2
长话短说,我正在尝试弄清楚如何在使用文档选择器访问 iCloud 时设置 .navigationBar.barStyle
和 navigationBar.tintColor
- 即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
。条形按钮调用 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) {
// ...
}
}
行得通。文档选择器按预期加载:
但是。为了弄清楚如何做到这一点,我希望菜单项 "Done" 为橙色。和之前一样。
我尝试将以下代码添加到 @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
协议的自定义版本。肯定有一个更简单的解决方案(我怀疑是否允许这样做)。
您可以通过 UIAppearance
:
更改导航栏默认色调颜色
UINavigationBar.appearance().tintColor = UIColor.orangeColor()
swift 3,4 和 xcode 9+ :
documentPicker.view.tintColor = .orange
我在 Xcode 7.0 beta 6
中使用 Swift 2长话短说,我正在尝试弄清楚如何在使用文档选择器访问 iCloud 时设置 .navigationBar.barStyle
和 navigationBar.tintColor
- 即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
。条形按钮调用 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) {
// ...
}
}
行得通。文档选择器按预期加载:
但是。为了弄清楚如何做到这一点,我希望菜单项 "Done" 为橙色。和之前一样。
我尝试将以下代码添加到 @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
协议的自定义版本。肯定有一个更简单的解决方案(我怀疑是否允许这样做)。
您可以通过 UIAppearance
:
UINavigationBar.appearance().tintColor = UIColor.orangeColor()
swift 3,4 和 xcode 9+ :
documentPicker.view.tintColor = .orange