如何在使用facebook-ios-sdk登录时访问appDelegate中的另一个UIViewController?
答案:如何在使用facebook-ios-sdk登录时访问appDelegate中的另一个UIViewController?
最后我用,我认为这是一个优雅的方式来做到这一点的通知。
谢谢你Alan。
我有我的基于标签的应用程序中的Facebook登录(通过facebook-ios-sdk)。
我在我的appDelegate中初始化“Facebook”。
我在settingViewController Tab中有一个“连接Facebook”的UIButton。
我可以通过点击“Connect Facebook”UIButton(在settingViewController标签中),然后调用“ - (void)fbDidLogin”(在appDelegate中)登录Facebook。
一切都很好。
但我的问题是如何更新“连接Facebook”UIButton(在settingViewController标签)“Facebook连接”?
我可以做这样的事情在的appDelegate:
- (void)fbDidLogin
{
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:[self.facebook accessToken] forKey:@"FBAccessTokenKey"];
[userDefaults setObject:[self.facebook expirationDate] forKey:@"FBExpirationDateKey"];
[userDefaults synchronize];
if (settingViewController) {
settingViewController.facebookButton.text = @"facebook connected";
}
}
谢谢你。
我曾尝试:
我把这个settingViewController标签,但这不叫当从Facebook登录屏幕应用的回报。所以我想我可能不得不在appDelegate中的“ - (void)fbDidLogin”中使用委托?
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self checkAccStatusAndUpdateButton];
}
有几种方法可以解决这个问题。这里有几个:
NSUserDefaults的 Facebook的连接时,您可以存储一个标志NSUserDefaults
。在viewDidLoad
方法SettingViewController
中,您可以检查该标志并在标题中进行相应更改。
通知 在fbDidLogin
方法,你可以触发一个NSNotification
;并且您的SettingViewController
可以观察到该通知并更改按钮标题。该方法假定SettingViewController
实例存在并可以观察通知。
谢谢@alan,我使用NSUserDefaults,但我不知道如何使SettingViewController从Facebook登录返回后检查它,因为 - (void)viewWillAppear:(BOOL)动画不会被触发。 (为什么) – ThinkChris 2012-03-14 03:14:10
这取决于您的视图层次结构的构建方式。这听起来像你有一个'UITabBarController' ...在它的'tabBarController:didSelectViewController'委托方法中,你可以将FB标志设置传播给'SettingViewController'。有关何时调用'viewWillAppear'的更多信息,请参见[this question](http://*.com/questions/131062/iphone-viewwillappear-not-firing) – FluffulousChimp 2012-03-14 03:25:17