使用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
。有关何时调用<代码>视图的详细信息,请参阅