gpt4 book ai didi

ios - UIBarButtonItem 操作方法在某些情况下不起作用

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

目前的问题和想知道的事情

UIBarButtonItem 操作方法在某些情况下不起作用。我想知道为什么它不起作用。

案例1

case1 storyboard

刚刚将 NavigationController 添加到默认的 ViewController

import UIKit

class ViewController: UIViewController {

let okButton = UIBarButtonItem(title: "OK", style: .plain, target: self, action: #selector(okButtonTapped(_:)))

override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem = okButton
}

@objc func okButtonTapped(_ sender: UIBarButtonItem) {
print("OK!")
}
}

在这种情况下,OK 按钮不起作用。没有错误信息。

案例2

case2 storyboard

为默认 ViewController 添加了导航栏。UINavigationItem 连接到名为 myNavigationItem 的 socket 。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var myNavigationItem: UINavigationItem!

let okButton = UIBarButtonItem(title: "OK", style: .plain, target: self, action: #selector(okButtonTapped(_:)))

override func viewDidLoad() {
super.viewDidLoad()
myNavigationItem.rightBarButtonItem = okButton
}

@objc func okButtonTapped(_ sender: UIBarButtonItem) {
print("OK!")
}
}

在这种情况下,OK 按钮起作用。

总结

我理解即使在情况1中,如果在viewDidLoad中执行okButton初始化,它也会起作用。我想知道为什么 case2 有效而 case1 无效。

谢谢你。

最佳答案

如果在 viewDidLoad 之前初始化 okButton,则无法设置目标 self。所以在 viewDidLoad

中初始化按钮
class ViewController: UIViewController {

var okButton:UIBarButtonItem?

override func viewDidLoad() {
super.viewDidLoad()
okButton = UIBarButtonItem(title: "OK", style: .plain, target: self, action: #selector(okButtonTapped(_:)))
self.navigationItem.rightBarButtonItem = okButton
}

@objc func okButtonTapped(_ sender: UIBarButtonItem) {
print("OK!")
}
}

关于ios - UIBarButtonItem 操作方法在某些情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57643852/

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