gpt4 book ai didi

ios - 如果在添加 barBarttonItem 的范围之外创建,为什么添加 barBarttonItem 不起作用?

转载 作者:行者123 更新时间:2023-11-28 10:31:08 25 4
gpt4 key购买 nike

我在添加 barButtons 时遇到了一些问题,并在另一个 question 的答案中找到了解决方案,但它没有解释为什么必须在同一范围内创建和添加按钮。我想知道为什么你不能在类级别创建按钮并将它们添加到像 vi​​ewDidLoad 这样的方法中。从下面复制的那个问题中不起作用的示例代码:

let rightButton = UIBarButtonItem(title: "Right", style: .plain, target: self, action: #selector(onRightClick))
let leftButton = UIBarButtonItem(title: "Left", style: .plain, target: self, action: #selector(onLeftClick))

override func viewDidLoad() {
super.viewDidLoad()
navigationItem.rightBarButtonItem = rightButton
navigationItem.leftBarButtonItem = leftButton
}

这会得到一个无法识别@objc 方法(此处未包含)的错误。这些方法没有任何问题,因为当您将按钮创建移动到 viewDidLoad 中时,错误消失并且代码可以正常工作。

最佳答案

这些栏按钮属性是在调用 init 之前创建的,并且您正在尝试访问在调用 init 之前无法调用的类方法。

如果你想在类范围内初始化你的按钮,你必须使它们成为惰性变量,以便在需要时创建它们

lazy var rightButton = UIBarButtonItem(title: "Right", style: .plain, target: self, action: #selector(onRightClick))
lazy var leftButton = UIBarButtonItem(title: "Left", style: .plain, target: self, action: #selector(onLeftClick))

关于ios - 如果在添加 barBarttonItem 的范围之外创建,为什么添加 barBarttonItem 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55860645/

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