Как вы получаете доступ к другому UIViewController в appDelegate при входе через facebook-ios-sdk? - PullRequest
0 голосов
/ 14 марта 2012

Ответ:

Наконец, я использую уведомления, которые я считаю элегантным способом сделать это.

Спасибо тебе, Алан.


У меня есть логин на Facebook (через facebook-ios-sdk) в приложении, основанном на вкладках.

Я инициализировал "Facebook" в своем приложении Delegate.

У меня есть кнопка «Connect Facebook» в настройке ViewController Tab.

Я могу войти в Facebook через нажатие кнопки «Connect Facebook» UIB (в настройке ViewController Tab), а затем вызывается «- (void) fbDidLogin» (в appDelegate).

Все хорошо.

Но мой вопрос заключается в том, как обновить UIButton "Connect Facebook" (в настройке ViewController Tab) до "Подключен 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";
    }
}

Спасибо.


Что я пробовал:

Я поставил это в настройке ViewController Tab, но это не вызывалось, когда приложение возвращалось с экрана входа в Facebook. Поэтому я думаю, что мне, возможно, придется использовать делегат в "- (void) fbDidLogin" в appDelegate?

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self checkAccStatusAndUpdateButton];
}

1 Ответ

1 голос
/ 14 марта 2012

Есть несколько способов справиться с этим. Вот пара:

NSUserDefaults Вы можете сохранить флаг в NSUserDefaults, когда Facebook подключен. В методе viewDidLoad SettingViewController вы можете проверить этот флаг и внести соответствующие изменения в заголовок UIButton.

Уведомления В методе fbDidLogin вы можете запустить NSNotification; и ваш SettingViewController сможет наблюдать это уведомление и изменить заголовок кнопки. Этот подход предполагает, что экземпляр SettingViewController существует и может наблюдать уведомление.

...