- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
出于某种原因,我不明白为什么我无法在我的应用程序中更改导航栏按钮的 tintColor
,而且我不知道如何找出原因。你能推荐我如何调试这个问题吗?
我正在将其添加到我的 View Controller 的 viewDidLoad 中:
UINavigationBar.appearance().tintColor = .green
但是,没有任何变化,后退按钮和 Aa 栏按钮保持默认的灰色。
导航栏和状态栏是半透明的,在整个应用程序中都位于 viewcontroller
的背景色之上。
我可以在测试应用程序中将 barbutton
更改为 .green,我在其中执行完全相同的操作(将其添加到 vc 的 ViewDidLoad,确保将 barbutton 图像 Assets 设置为 Template所以它们会呈现我设置的颜色)。但无论出于何种原因,同样的事情不会在我的应用程序原型(prototype)中改变。
是否有任何我可能不知道的常见原因?
添加:栏按钮仅通过 Storyboard添加。
这里是尝试通过 1 个 View Controller 的 viewDidLoad 更改其颜色的代码:
Class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UINavigationBar.appearance().tintColor = .green
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
}
}
最佳答案
如果你想使用全局 appearance()
代理,那么你不能在你的 View Controller 中使用它。
如果你想在 View Controller 的 viewDidLoad
中更改 tintColor
,那么你必须直接在 Controller 的 navigationController
实例上设置它:
navigationController?.navigationBar.tintColor = .green
要使用 appearance()
代理,并为导航栏设置全局 tintColor
,您必须在初始化导航 Controller 之前执行此操作。
例如,如果您在应用委托(delegate)的 application(_:didFinishLaunchingWithOptions:)
中执行此操作,它将起作用:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UINavigationBar.appearance().tintColor = .green
return true
}
请参阅 UIAppearance
文档以了解详细信息:
https://developer.apple.com/documentation/uikit/uiappearance
“iOS 在 View 进入窗口时应用外观更改,它不会更改已经在窗口中的 View 的外观。要更改当前在窗口中的 View 的外观,请从 View 中删除 View 层次结构,然后把它放回去。”
关于ios - 如何调试 navigationcontroller.tintColor 不改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52269294/
您好,所以我有这个 storyboard 结构 我在 ViewController B 中有一个 button 我需要那个 button 指向底部NavigationController 其中有 Vi
我的基于 Storyboard 的应用具有以下结构: NavigationController (NavCa) —> CollectionViewController (VCa) —> 模态呈现 —>
我可以用 MyFirstAppDelegate *delegate = (MyFirstAppDelegate *)[[UIApplication sharedApplication] delegat
我正在使用以下策略构建一个基于窗口的(所有 UI 都以编程方式连接,没有 IB)MonoTouch 应用程序: 伪代码: Note: I'm not calling base.ViewDidLoad
我发现了困难的方法 navigationController.navigationBarHidden = NO; 和 navigationController.navigationBar.hidden
这两种说法有什么区别。为了隐藏导航栏,我使用以下语句之一在 viewWillAppear 方法中隐藏导航栏,如下所示: -(void)viewWillAppear:(BOOL)animated {
我已经发布了这个问题,但这次我发布了代码。所以我有一个uiviewController,在这个viewController的viewDidLoad中我隐藏了navigationController的b
我想在横向显示另一个没有选项卡栏的 View 。所以我创建了一个新 View ,只更改 self.view 和 self.hidesBottomBarWhenPushed = YES; 但这对我不起作
当我将新的 ViewController 推送到导航 Controller 堆栈上时,“后退”按钮是前一个 Controller 的标题。 如何将后退按钮中的文本更改为“后退”而不是默认的最后一个 C
我在我的应用程序中设置了一个 subview “弹出窗口”,如果用户点击 subview 弹出窗口上的按钮,我想显示一个 navController。到目前为止,我已经设置了按钮,但是如果我点击按钮,
我有两个问题: 问题 1:我正在尝试更改导航后退按钮,我正在从父 ViewController 执行此操作: -(void)prepareForSegue:(UIStoryboardSegue *)s
我有一个 UINavigationController,它的根 Controller (UITableViewController) 和一个 UIViewController 的实例,当我单击导航 C
我正在尝试制作我的第一个基于表格的应用程序。但是它不会改变导航栏上标题的颜色。 我试过这段代码,但它似乎不起作用: this.NavigationController.NavigationItem.T
问题如图所示。我怎样才能从 viewcontroller C 返回到 A。方法 popViewController Animated 不起作用。 最佳答案 您的 Controller 层次结构存在问题
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit th
我在使用 Navigation Controller 转到我的详细 View 时遇到问题。 我正在使用 tableview 来显示一些练习,当你点击练习时,你会进入详细 View ,嵌入在导航 Con
我试图通过允许用户添加算命应用程序的新结果来理解演示 View Controller 。当用户点击导航栏右上角的“添加新结果”时,会弹出一个新的 View Controller ,用户可以在此处输入新
当我点击页面底部的灰色按钮时,我想使用 popToRootController 从最后一页返回到第一页。 我不明白如何同时对两个导航 Controller 进行操作。我为最后两页使用了一个库。 Sid
我有一个 navigationController 嵌入在我的 Root View 和 subview 中,并且在我的一个 subview 中有: @IBAction func button(send
是否可以将后退按钮的图标从箭头更改为其他图标? (在导航栏中) 我在storyboard的preferences里没找到解决方案 最佳答案 如果您的部署目标至少是 iOS 7,您可以使用 backIn
我是一名优秀的程序员,十分优秀!