gpt4 book ai didi

swift - 如何与代表一起更改全局导航栏标题?

转载 作者:行者123 更新时间:2023-11-30 13:12:09 24 4
gpt4 key购买 nike

我需要在文本字段中写一些内容,当按键盘上的回车键时,会更改导航栏中的全局标题(对于整个应用程序)。

我被要求使用委托(delegate)执行此操作,但我没有从 navigationController 中找到任何委托(delegate)方法来执行此操作。

最佳答案

是的,您可以实现,但您必须在每个推送/呈现 View Controller 中进行处理。最好的方法是子类化导航 Controller 并在推送/呈现 View Controller 时覆盖标题。

自定义导航 Controller : enter image description here

Swift 代码:

class MyNavigationController: UINavigationController, UINavigationBarDelegate {

var navFixedTitle: String?

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}

override func pushViewController(viewController: UIViewController, animated: Bool) {
viewController.title = navFixedTitle ?? "Constant"
super.pushViewController(viewController, animated: animated)
}

//Nav Bar Delegate
func navigationBar(navigationBar: UINavigationBar, didPushItem item: UINavigationItem) {
// navigationBar.backItem?.title = "Back"
}
}

设置您的标题:

我使用了表格 View ,当点击不同的单元格时,导航标题将相应地设置。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let nav = self.navigationController as? MyNavigationController {
nav.navFixedTitle = sec1[indexPath.row]
}
performSegueWithIdentifier("push", sender: tableView.cellForRowAtIndexPath(indexPath))
}

输出:

enter image description here

关于swift - 如何与代表一起更改全局导航栏标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38619929/

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