Ios 为什么UIButton目标仅在选择器以某种方式声明时才起作用

Ios 为什么UIButton目标仅在选择器以某种方式声明时才起作用,ios,swift,uibutton,uibarbuttonitem,Ios,Swift,Uibutton,Uibarbuttonitem,我真的很困惑,为什么只有当我在viewDidLoad中创建UIButton时,下面的命令才起作用,我希望得到一个答案,因为我正在尝试清理我的viewDidLoad函数 let logoutButton: UIBarButtonItem = { let button = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(handleLogout)) return butto

我真的很困惑,为什么只有当我在viewDidLoad中创建UIButton时,下面的命令才起作用,我希望得到一个答案,因为我正在尝试清理我的viewDidLoad函数

let logoutButton: UIBarButtonItem = {
    let button = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(handleLogout))
    return button
}()

override func viewDidLoad() {
    super.viewDidLoad()

    navigationItem.leftBarButtonItem = logoutButton // Does not work
    // navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(handleLogout))
}

这段代码还应该去哪里?它怎么会不起作用?这对我来说很有效。当点击注销按钮时,handlelogout函数没有被调用。这看起来像是一个Swift错误。你定义了handlelogout方法吗?