Ios 巴布托主义没有出现
在应用程序Im making中,Im尝试启用登录/注销twitter。我想要它,这样就有了一个Barbuttonite,如果没有当前用户,就说登录,如果有,就说注销。我在故事板上创建了两个按钮,一个用于登录,一个用于注销。在viewDidLoad()中,我有以下代码:Ios 巴布托主义没有出现,ios,swift,uinavigationbar,uibarbuttonitem,Ios,Swift,Uinavigationbar,Uibarbuttonitem,在应用程序Im making中,Im尝试启用登录/注销twitter。我想要它,这样就有了一个Barbuttonite,如果没有当前用户,就说登录,如果有,就说注销。我在故事板上创建了两个按钮,一个用于登录,一个用于注销。在viewDidLoad()中,我有以下代码: self.navigationItem.rightBarButtonItem = nil self.navigationItem.rightBarButtonItem = nil if twitterUser.
self.navigationItem.rightBarButtonItem = nil
self.navigationItem.rightBarButtonItem = nil
if twitterUser.currentUser != nil {
print("there is a current user")
self.navigationItem.rightBarButtonItem = logoutButton
} else {
self.navigationItem.rightBarButtonItem = loginButton
}
而且似乎效果很好。当用户实际登录或注销时,问题就出现了。按钮连接到以下功能:
@IBAction func onLogin(sender: AnyObject) {
let client = twitterAPI.sharedInstance
client.login({ () -> () in
self.navigationItem.rightBarButtonItem = nil
self.navigationItem.rightBarButtonItem = self.logoutButton
}) { (error: NSError) -> () in
print(error.localizedDescription)
}
}
@IBAction func onLogout(sender: AnyObject) {
twitterAPI.sharedInstance.logout()
self.navigationItem.rightBarButtonItem = nil
self.navigationItem.rightBarButtonItem = self.loginButton
}
登录后,登录按钮将消失,但注销按钮不会显示。注销时,“注销”按钮消失,但“登录”按钮不出现。我不确定是什么原因导致了这种情况,因为我在viewDidLoad中使用了相同的方法,而且似乎工作正常。此代码可能会对您有所帮助
override func viewDidLoad()
{
super.viewDidLoad()
barButton = UIBarButtonItem(title: "Login", style: UIBarButtonItemStyle.Done, target: self, action: "barBtnAction:")
barButton.tag = 0
self.navigationItem.rightBarButtonItem = barButton
}
@IBAction func barBtnAction(sender:UIBarButtonItem)
{
let shouldLogin: Bool = sender.tag == 0 ? true : false
if shouldLogin
{
//your code here
onLogin()
}
else
{
//your code here
onLogout()
}
}
func onLogin()
{
barButton.title = "Logout"
barButton.tag = 1
}
func onLogout()
{
barButton.title = "Login"
barButton.tag = 0
}
传递给login()的块是否在主线程上执行?如果您在onLogin()和onLogout()中打印了一些内容,您看到消息了吗?您可能正在取消您的
self.logoutButton
和self.loginButton
。在分配它们之前打印它们的描述。让shouldLogin:Bool=sender.tag==0?true:false
应该是让shouldLogin:Bool=sender.tag==0
不知道为什么要添加不必要的三元operator@Qunin:您可以用自己的方式修改代码。。我只是给出了示例代码。如果你不喜欢三元条件语句,那么就使用If-else条件块。我的观点是,在这种情况下,三元运算符完全不起任何作用,也不需要使用If-else。。。那就更公平了worse@Qunin:我使用三元运算符只是为了代码可读性。