我对iOS开发有点新意,遇到了一些问题。
我已经在我的应用程序中实现了用于iOS登录的FB SDK,我可以登录并且没有问题。
但是,我要做的是将单个按钮文本从“登录”更改为“注销”,具体取决于FB会话的状态。
在我的appDelegate(处理FB会话状态更改)中,我正在从我的主视图控制器中调用两个方法,如下所示:
helloappViewController * vc = [[helloappViewController alloc]init];
[vc showLogInButton];
...和...
helloappViewController * vc = [[helloappViewController alloc]init];
[vc showLogOutButton];
helloappViewController
中被调用的方法是:
- (void) showLogInButton {
NSLog(@"Changing button text to 'Login'.");
[self.buttonLogInLogOut setTitle:@"Login" forState:UIControlStateNormal];
}
- (void) showLogOutButton {
NSLog(@"Changing button text to 'Logout'.");
[self.buttonLogInLogOut setTitle:@"Logout" forState:UIControlStateNormal];
}
我知道这些方法被正确调用,因为我可以看到控制台日志输出正常,我知道我已经通过FB登录和退出,因为我设置了其他控制台日志输出。
但是,按钮标题文字未被更改。
任何人都知道我哪里出错了?
THX。
答案 0 :(得分:0)
尝试移动代码
[self showLogInButton];
和
[self showLogOutButton];
到helloappViewController视图控制器的viewDidLoad方法
类似的东西:
helloappViewController * vc = [[helloappViewController alloc]init];
vc.fbIsConnected = YES;
在viewDidLoad中:
if (self.fbIsConnect)
{
[self showLogOutButton];
}
else
{
[self showLogInButton];
}
在vc:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(fbDidChange)
name: FBDidChangeNotification
object: nil];
- (void) fbDidChange
{
// change button title
}
fb控制器中的:
[[NSNotificationCenter defaultCenter] postNotificationName:FBDidChangeNotification object:self];