gpt4 book ai didi

ios - Swift:如何创建自定义 UINavigationBar 并添加自定义后退按钮?

转载 作者:搜寻专家 更新时间:2023-11-01 06:33:19 25 4
gpt4 key购买 nike

我正在尝试创建自定义导航栏。

我像这样在 viewWillAppear 中隐藏了原始的导航栏:

override func viewWillAppear(_ animated: Bool) {
self.navigationController?.isNavigationBarHidden = true
}

我像这样对 UINavigationBar 进行子类化:

let navBar: UINavigationBar = {
let view = UINavigationBar()
view.backgroundColor = .clear
view.isTranslucent = true
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()

在 viewDidLoad 中,我正在调用 setupNavBar():

func setupNavBar() {
view.addSubview(navBar)
self.navBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 80)
let backButton = UIBarButtonItem(image: UIImage(named:"backThick"), style: .plain, target: self, action: #selector(popControllerOffStack))
}

问题是 backButton 被添加到被隐藏的原始 navigationBar 中。这让我觉得我错误地创建了导航栏。如何将按钮添加到导航栏?


更新后的代码(仍然无法正常工作):

class CustomNavBar: UINavigationBar {
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = .red
}
}

// In the viewController

let navBar = CustomNavBar()

override func viewDidLoad() {
super.viewDidLoad()
setupNavBar()
}

func setupNavBar() {
view.addSubview(navBar)
navBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 80)
let backButton = UIBarButtonItem(image: UIImage(named:"backThick"), style: .plain, target: self, action: #selector(popControllerOffStack))
self.navigationItem.leftBarButtonItem = backButton
}

正在将按钮添加到原始导航栏。

enter image description here

最佳答案

您没有子类化 UINavigationBar。相反,您正在创建 UINavigationBar 的新实例并在计算变量内修改其属性。这意味着每次访问 navBar 时,您都在初始化一个新的 UINavigationBar 对象。

创建子类:

class MyCustomNavigationBar: UINavigationBar {
// Set properties in here after initialization
}

一旦创建了合适的子类,就可以像这样初始化一个实例:

var navBar = MyCustomNavigationBar()

最后,将您的按钮添加到导航栏:

let backButton = UIBarButtonItem(image: UIImage(named:"backThick"), style: .plain, target: self, action: #selector(popControllerOffStack))  
// Assuming 'self' is an instance of UINavigationController()
self.navigationItem.leftBarButtonItem = backButton

看官方Swift Programming Language Guide on Inheritance .

关于ios - Swift:如何创建自定义 UINavigationBar 并添加自定义后退按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44734628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com