首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >navigationBar .tintColor和UIDocumentPickerViewController (文档选择)?

navigationBar .tintColor和UIDocumentPickerViewController (文档选择)?
EN

Stack Overflow用户
提问于 2015-08-26 15:38:04
回答 2查看 3.4K关注 0票数 5

我在Xcode 7.0 beta 6中使用Swift 2

长话短说,在使用文档选择器访问.navigationBar.barStyle (即UIDocumentPickerViewController )时,我正在尝试如何设置iCloud和UIDocumentPickerViewController

我曾尝试过例如:

代码语言:javascript
复制
/...
documentPicker.navigationController!.navigationBar.barStyle = UIBarStyle.Default
documentPicker.navigationController!.navigationBar.tintColor = UIColor.orangeColor()
/...

例如。这里,我在导航控制器中嵌入了一个视图控制器:

MyNavigationController中,我可以将.barStyle.tintStyle设置为:

代码语言:javascript
复制
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代码中所示

代码语言:javascript
复制
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中,如下所示:

代码语言:javascript
复制
//...
documentPicker.navigationController!.navigationBar.barStyle = UIBarStyle.Default
documentPicker.navigationController!.navigationBar.tintColor = UIColor.orangeColor()
self.presentViewController(documentPicker, animated: true, completion: nil)
//...

这不起作用,因为此时documentPicker.navigationControllernil

有人能告诉我在这个周期中我如何或在哪里可以访问documentPicker.navigationController!.navigationBar.tintColor吗?

或者我遗漏了什么,还有别的方法改变菜单的颜色吗?

或者我应该创建一个自定义导航控制器和一个自定义文档选择器视图控制器。从理论上讲,我可以访问相关的viewDidLoad。我试过了,但意识到我还需要一个自定义版本的UIDocumentPickerDelegate协议。肯定有一个更容易的解决办法(我对是否允许这样做表示怀疑)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-26 17:23:34

您可以通过navigationBar来改变UIAppearance的默认色调。

代码语言:javascript
复制
UINavigationBar.appearance().tintColor = UIColor.orangeColor()
票数 4
EN

Stack Overflow用户

发布于 2018-03-14 09:34:04

swift 3,4和xcode 9+

代码语言:javascript
复制
documentPicker.view.tintColor = .orange
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32230947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档