Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何更改DetailViewController中的后退按钮颜色?_Ios_Swift3_Uinavigationcontroller - Fatal编程技术网

Ios 如何更改DetailViewController中的后退按钮颜色?

Ios 如何更改DetailViewController中的后退按钮颜色?,ios,swift3,uinavigationcontroller,Ios,Swift3,Uinavigationcontroller,我想更改DetailViewController中“后退”按钮的颜色。 我使用的是Swift 3和Xcode 8.3.3;但这是行不通的: navigationItem.backBarButtonItem?.tintColor = UIColor.darkGray 怎么做 我还尝试: navigationItem.leftBarButtonItem?.tintColor = UIColor.darkGray 但是没有用 实际上,我在调试器中验证了navigationItem.BackbarB

我想更改DetailViewController中“后退”按钮的颜色。 我使用的是Swift 3和Xcode 8.3.3;但这是行不通的:

navigationItem.backBarButtonItem?.tintColor = UIColor.darkGray
怎么做

我还尝试:

navigationItem.leftBarButtonItem?.tintColor = UIColor.darkGray
但是没有用

实际上,我在调试器中验证了navigationItem.BackbarButtonim为nil

以下是我上一次使用viewDidLoad进行试用的完整代码:

override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationController?.navigationBar.tintColor = UIColor.darkGray
}
这里有一个简单的逐步重现我的问题的方法:

从Xcode 8.3.3:

  • 创建一个新的Xcode项目

  • 选择主细节应用程序。你不需要核心数据

  • 创建项目

  • 在DetailViewController.swift的viewDidLoad()函数中,添加以下行之一:

    self.navigationItem.backBarButtonItem?.tintColor = UIColor.darkGray
    self.navigationController?.navigationBar.tintColor = UIColor.darkGray
    
    您将在尝试时看到DetailViewController的后退按钮保持蓝色

    如果你看到一些不同的东西,那么我的Xcode肯定有点奇怪


我可以通过以下方式进行更改:

self.navigationController?.navigationBar.tintColor = UIColor.white
希望这对你有用

编辑:

创建项目后,您将在故事板中看到以下内容:

我把它改为:

这给了我以下输出:

下面是我在DetailViewController中为
viewDidLoad()
编写的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.tintColor = UIColor.red
    // Do any additional setup after loading the view, typically from a nib.
    configureView()
}

希望现在就足够清楚了。

检查是否已将导航控制器正确嵌入到情节提要中,然后在ViewDiLoad of detailviewcontroller中写入以下代码:

self.navigationController?.navigationBar.tintColor = UIColor.brown

它工作正常

请确保您已正确安装了嵌入式导航控制器。同时,为了安全起见,请确保您已提供了正确的控制器类

在控制器类中,只需添加此行-:

import UIKit

class First: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
self.navigationController?.navigationBar.tintColor = UIColor.darkGray
        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
输出-:


您是否在您的
视图中更改它?您希望看到什么?是的,我在viewDidLoad中这样做。上载了一个测试项目,该项目正在更改条形图的颜色:我认为问题是由于您的.storyboard文件引起的。只需将您的.storyboard与测试项目1进行比较即可确保。我刚刚编辑了我的帖子,添加了一种逐步重现问题的方法。如果你有时间,请看一看。谢谢。它起作用了!一点:我必须将这一行:“let controller=(segue.destination as!UINavigationController).topViewController as!DetailViewController”更改为:“let controller=segue.destination as!DetailViewController”。我想知道苹果是否意识到了这一点。在iPhone上,你甚至可以去掉其中一个导航控制器(可能不在iPad上,我还没有试过)。你能解释一下“将导航控制器正确嵌入故事板”是什么意思吗。我到底需要检查什么?如果我看起来很正常。我的意思是说“转到情节串连板->选择要使初始viewcontroller->编辑器嵌入navigationcontroller的视图控制器,并使navigationcontroller成为初始viewcontroller。这就是我所做的。@Michel如果对你不起作用,请用更多细节编辑你的问题。我只是编辑了我的帖子以添加内容一种逐步重现问题的方法。如果有时间,请看一看。@Michel为什么不使用单视图应用程序?我创建了单视图应用程序,从未尝试过主细节应用程序。如果可能,请尝试单视图应用程序,它应该可以工作。如果你想测试我的错误,你必须和我一样尝试。按照我在文章末尾给出的步骤,只需不到一分钟。如果你有时间的话。除此之外,我的问题与单个视图应用程序无关。