【发布时间】:2018-03-14 17:34:04
【问题描述】:
我在 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) {
// ...
}
}
这行得通。文档选择器按预期加载:
但是。为了弄清楚如何做到这一点,我希望菜单项“完成”为橙色。和以前一样。
我已尝试将以下代码添加到@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 协议。肯定有一个更简单的解决方案(我怀疑这是否会被允许)。
【问题讨论】:
标签: ios swift uidocumentpickervc