实例成员 'navigationItem' 不能用于类型 'MainViewController'
Instance member 'navigationItem' cannot be used on type 'MainViewController'
xcode8似乎无法摆脱这种恐惧:
编译失败并显示消息:实例成员 'navigationItem' 不能用于类型 'MainViewController'
class MainViewController: UITableViewController {
private static var __once: () = {
let loginButton: UIBarButtonItem = UIBarButtonItem(title: nil, style: .done, target: self, action: nil)
MainViewController.navigationItem.rightBarButtonItem = loginButton
}()
这是调用它的函数:
func setupRightBarButtonItem() {
struct Static {
static var onceToken: Int = 0
}
_ = MainViewController.__once
if (AWSIdentityManager.default().isLoggedIn) {
navigationItem.rightBarButtonItem!.title = NSLocalizedString("Sign-Out", comment: "Label for the logout button.")
navigationItem.rightBarButtonItem!.action = #selector(MainViewController.handleLogout)
}
}
看起来您是在第一次调用 setupRightBarButtonItem
时尝试创建右栏按钮项目,但我不确定您是从哪里想到这段代码的。
消息很清楚,navigationItem
是一个实例 属性 而您正试图将其用作 class 属性.
为什么不用更直接的:
func setupRightBarButtonItem() {
if navigationItem.rightBarButtonItem == nil {
navigationItem.rightBarButtonItem =
UIBarButtonItem(title: nil, style: .done, target: self, action: nil)
}
if (AWSIdentityManager.default().isLoggedIn) {
navigationItem.rightBarButtonItem!.title = NSLocalizedString("Sign-Out", comment: "Label for the logout button.")
navigationItem.rightBarButtonItem!.action = #selector(MainViewController.handleLogout)
}
// You probably need an `else` clause here to update the button if the user isn't logged in?
}
xcode8似乎无法摆脱这种恐惧:
编译失败并显示消息:实例成员 'navigationItem' 不能用于类型 'MainViewController'
class MainViewController: UITableViewController {
private static var __once: () = {
let loginButton: UIBarButtonItem = UIBarButtonItem(title: nil, style: .done, target: self, action: nil)
MainViewController.navigationItem.rightBarButtonItem = loginButton
}()
这是调用它的函数:
func setupRightBarButtonItem() {
struct Static {
static var onceToken: Int = 0
}
_ = MainViewController.__once
if (AWSIdentityManager.default().isLoggedIn) {
navigationItem.rightBarButtonItem!.title = NSLocalizedString("Sign-Out", comment: "Label for the logout button.")
navigationItem.rightBarButtonItem!.action = #selector(MainViewController.handleLogout)
}
}
看起来您是在第一次调用 setupRightBarButtonItem
时尝试创建右栏按钮项目,但我不确定您是从哪里想到这段代码的。
消息很清楚,navigationItem
是一个实例 属性 而您正试图将其用作 class 属性.
为什么不用更直接的:
func setupRightBarButtonItem() {
if navigationItem.rightBarButtonItem == nil {
navigationItem.rightBarButtonItem =
UIBarButtonItem(title: nil, style: .done, target: self, action: nil)
}
if (AWSIdentityManager.default().isLoggedIn) {
navigationItem.rightBarButtonItem!.title = NSLocalizedString("Sign-Out", comment: "Label for the logout button.")
navigationItem.rightBarButtonItem!.action = #selector(MainViewController.handleLogout)
}
// You probably need an `else` clause here to update the button if the user isn't logged in?
}