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

时间:2013-11-27 14:37:34

标签: objective-c cocoa-touch

我对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。

1 个答案:

答案 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];