2013-11-27 70 views
1

我对iOS开发有点新,并且遇到了一些小问题。试图从appDelegate方法更改视图中的按钮文本

我已经实现了用于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

是零的按钮? – Larme

+0

对不起,不明白。你能详细说明吗? – user1418711

+0

你确定你正在连接按钮吗? – Sandeep

回答

0

尝试移动代码

[self showLogInButton]; 

[self showLogOutButton]; 

到helloappViewController视图控制器viewDidLoad方法

是这样的:

helloappViewController * vc = [[helloappViewController alloc]init]; 
vc.fbIsConnected = YES; 

在viewDi DLOAD:

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 
} 

在反馈控制器:

[[NSNotificationCenter defaultCenter] postNotificationName:FBDidChangeNotification object:self]; 
+0

此外,我已经调用这些在viewDidAppear方法,当应用程序第一次加载,所以设置正确的按钮,并且这工作正常。我遇到的问题是从appDelegate调用这些方法不适合我。 – user1418711

+0

我需要做的是根据FB会话状态的变化实时更改按钮文本。这只会改变视图第一次加载时的按钮文本(该应用程序是一个单一的视图应用程序)。我想我遇到的问题是,也许我没有在'showLogOutButton'和'showLogInButton'方法中正确引用按钮? – user1418711

+0

你可以使用NSNotificationCenter来通知你的vc关于fb的更改状态 – stosha

相关问题