使用facebook ios sdk登录时,如何访问appDelegate中的另一个UIViewController?
回答: 最后,我使用通知,我认为这是一种优雅的方式 谢谢你,艾伦使用facebook ios sdk登录时,如何访问appDelegate中的另一个UIViewController?,ios,uiviewcontroller,delegates,facebook-ios-sdk,Ios,Uiviewcontroller,Delegates,Facebook Ios Sdk,回答: 最后,我使用通知,我认为这是一种优雅的方式 谢谢你,艾伦 我在基于标签的应用程序中有一个facebook登录(通过facebook ios sdk) 我在appDelegate中使用首字母“Facebook” 我在settingViewController选项卡中有一个“连接Facebook”按钮 我可以通过点击“连接facebook”按钮(在settingViewController选项卡中)登录facebook,然后调用“-(void)fbdilogin”(在appDelegate
我在基于标签的应用程序中有一个facebook登录(通过facebook ios sdk) 我在appDelegate中使用首字母“Facebook” 我在settingViewController选项卡中有一个“连接Facebook”按钮 我可以通过点击“连接facebook”按钮(在settingViewController选项卡中)登录facebook,然后调用“-(void)fbdilogin”(在appDelegate中) 一切都很好 但我的问题是如何将“连接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)fbdilogin”中使用delegate
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self checkAccStatusAndUpdateButton];
}
有几种方法可以解决这个问题。以下是几点: NSUserDefaults 当Facebook连接时,您可以在
NSUserDefaults
中存储一个标志。在SettingViewController
的viewdiload
方法中,您可以检查该标志,并在ui按钮
标题中进行适当更改
通知
在
fbdilogin
方法中,您可以触发NSNotification
;您的设置ViewController
可以观察到该通知并更改按钮标题。这种方法假设SettingViewController
实例存在并且可以观察到通知。谢谢@alan,我确实使用了NSUserDefaults,但我不知道如何让SettingViewController在从facebook登录返回后检查它,因为-(void)viewwillbeen:(BOOL)动画不会被触发。(为什么)这取决于视图层次结构的构造方式。听起来你好像有一个UITabBarController
。。。在其选项卡barcontroller:didSelectViewController
委托方法中,您可以将FB标志设置传播到设置ViewController
。有关何时调用<代码>视图的详细信息,请参阅