繁体   English   中英

尝试通过appDelegate方法更改视图中的按钮文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM