使导航栏标题成为按钮 (Swift)
Making the nav bar title a button (Swift)
我正在尝试让导航栏的标题成为它自己的按钮。我的应用程序中的用户可以拥有多个个人资料,导航栏标题显示他们当前选择的个人资料的用户名。按下此按钮应该会弹出可供选择的可用配置文件列表 (handleShowProfiles)。出于某种原因,标题显示但不作为按钮使用,它只是静态文本并且触摸它没有任何作用。
let changeProfileContainer : UIView = {
let container = UIView()
container.frame = CGRect(x: 0, y: 0, width: 200, height: 40)
let button = UIButton(type: .custom)
button.setTitle("@username ▼", for: .normal)
button.setTitleColor(.black, for: .normal)
button.frame = container.frame
button.addTarget(self, action: #selector(handleShowProfiles), for: .touchUpInside)
container.addSubview(button)
return container
}()
func configureNavBar() {
self.navigationController?.navigationBar.tintColor = .black
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "send"), style: .plain, target: self, action: #selector(handleSubmitPost))
self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "drafts"), style: .plain, target: self, action: #selector(handleDrafts))
self.navigationItem.titleView = changeProfileContainer
}
知道为什么按钮部分不起作用吗?在 Apple 的文档中,它说您必须将按钮放在视图中,自定义按钮类型,并更改按钮的默认框架 (0, 0, 0, 0)。我很确定这就是我搞砸的地方,但我不知道。
链接到 -- 查看 Ahmad F 回答的最后一部分
不知道为什么,但计算属性中的选择器似乎不起作用。
我尝试在不计算的情况下添加容器视图并单击按钮有效。
func configureNavBar() {
self.navigationController?.navigationBar.tintColor = .black
let container = UIView()
container.frame = CGRect(x: 0, y: 0, width: 200, height: 40)
let button = UIButton(type: .custom)
button.setTitle("@username ▼", for: .normal)
button.setTitleColor(.black, for: .normal)
button.frame = container.frame
button.addTarget(self, action: #selector(pressTitle), for: .touchUpInside)
container.addSubview(button)
navigationItem.titleView = container
}
我正在尝试让导航栏的标题成为它自己的按钮。我的应用程序中的用户可以拥有多个个人资料,导航栏标题显示他们当前选择的个人资料的用户名。按下此按钮应该会弹出可供选择的可用配置文件列表 (handleShowProfiles)。出于某种原因,标题显示但不作为按钮使用,它只是静态文本并且触摸它没有任何作用。
let changeProfileContainer : UIView = {
let container = UIView()
container.frame = CGRect(x: 0, y: 0, width: 200, height: 40)
let button = UIButton(type: .custom)
button.setTitle("@username ▼", for: .normal)
button.setTitleColor(.black, for: .normal)
button.frame = container.frame
button.addTarget(self, action: #selector(handleShowProfiles), for: .touchUpInside)
container.addSubview(button)
return container
}()
func configureNavBar() {
self.navigationController?.navigationBar.tintColor = .black
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "send"), style: .plain, target: self, action: #selector(handleSubmitPost))
self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "drafts"), style: .plain, target: self, action: #selector(handleDrafts))
self.navigationItem.titleView = changeProfileContainer
}
知道为什么按钮部分不起作用吗?在 Apple 的文档中,它说您必须将按钮放在视图中,自定义按钮类型,并更改按钮的默认框架 (0, 0, 0, 0)。我很确定这就是我搞砸的地方,但我不知道。
链接到
不知道为什么,但计算属性中的选择器似乎不起作用。
我尝试在不计算的情况下添加容器视图并单击按钮有效。
func configureNavBar() {
self.navigationController?.navigationBar.tintColor = .black
let container = UIView()
container.frame = CGRect(x: 0, y: 0, width: 200, height: 40)
let button = UIButton(type: .custom)
button.setTitle("@username ▼", for: .normal)
button.setTitleColor(.black, for: .normal)
button.frame = container.frame
button.addTarget(self, action: #selector(pressTitle), for: .touchUpInside)
container.addSubview(button)
navigationItem.titleView = container
}