gpt4 book ai didi

ios - 从导航 Controller 设置 rightBarButtonItem

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

如何从导航 Controller 而不是 View Controller 设置右栏按钮?

我一直在阅读有关编写 SOLID View Controller 的文章,它只作为 Controller 工作,而不是向它们添加所有内容。

帖子建议将导航逻辑移到 View Controller 之外(我同意)。此外, View Controller 真的不应该设置它嵌入的导航 Controller ,所以我试图将设置导航栏的代码移动到我的自定义 UINavigationController 类。

我部分成功了,我设法更新了颜色,但无法设置 rightBarButtonItem

将这些行添加到 View Controller 会起作用,但我想从 UINavigationController 子类中进行。

let settingsImage = UIImage(named: "settingsButton")
self.rightBarButton = UIBarButtonItem(image: settingsImage, style: UIBarButtonItemStyle.Plain, target: self, action: "showSettings")
self.navigationItem.rightBarButtonItem = self.rightBarButton;

我看过“默认导航按钮”这个问题,它建议创建父 View Controller 并从中子类化所有 View Controller ,但我真的不喜欢 View Controller 正在设置导航 Controller 这一事实。应该是相反的。

编辑:我得到了 self.navigationBar.items。如果我将其设置为零,则不会显示任何内容。所以我可能需要改变它。尚不确定如何。

最佳答案

导航 Controller 不拥有显示的导航栏,因此也不拥有上面的按钮。

导航 Controller 将 View Controller 推送到屏幕并为它们提供导航栏。然后由 View Controller 配置导航栏(标题、栏按钮等)。除了后退按钮,它的默认配置是前一个 Controller 的标题。

所以无论如何,这不是“设置导航 Controller ”,而是配置属于 View Controller 的导航栏。

最好的地方是 View Controller 本身。

如果您想要在整个应用程序中使用默认按钮,那么您可以为所有 View Controller 创建一个“父子类”。 (但是您只能使用您可以使用的 Controller 类型)。

或者我过去通过使用类似这样的方法在 UIBarButtonItem 上创建类别来完成此操作...

+ (UIBarButtonItem *)myDefaultButtonWithTarget:(id)target action:(selector)action

这意味着你必须在你想要的每个 View Controller 中调用它......

self.navigationItem.rightBarButtonItem = [UIBarButtonItem myDefaultButtonWithTarget:self action:@selector(doSomething)];

但这意味着您只需要一行代码即可完成,而不必每次都进行配置。此外,您可以通过更改类别在任何地方更改按钮。

文档: https://developer.apple.com/reference/uikit/uinavigationbar

关于ios - 从导航 Controller 设置 rightBarButtonItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24165704/

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