![](/img/trans.png)
[英]Calling a method from viewcontroller in the appdelegate does not change the text on the Screen
[英]Trying to change button text in a view from an appDelegate method
我是iOS开发的新手,现在遇到了一个小问题。
我已经实现了FB SDK for iOS登录到我的应用程序,并且可以登录和退出都没有问题。
但是,我要执行的操作是根据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登录和注销。
但是,按钮标题文本不会更改。
有人知道我可能会出错吗?
谢谢。
尝试移动代码
[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];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.