Как заставить мой метод работать, когда представление перезагружается - PullRequest
0 голосов
/ 22 ноября 2011

Я хочу создать кнопку входа в систему. Когда я нажимаю на нее, запускается Facebook, я принимаю мое приложение, приложение Facebook закрывается и мое приложение перезагружается. Моя проблема в том, что во второй раз, когда мое приложение запускается, после принятия в Facebook я не могу найти, где отключить кнопку входа.

Я написал этот код:

-(IBAction) login:(id)sender;
{

    AutoAppDelegate *delegate = (AutoAppDelegate *) [[UIApplication sharedApplication] delegate];
    // Check and retrieve authorization information
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
        && [defaults objectForKey:@"FBExpirationDateKey"]) {
        [delegate facebook].accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        [delegate facebook].expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }
    if (![[delegate facebook] isSessionValid]) {
        [delegate facebook].sessionDelegate = self;
        NSArray *permissions = [[NSArray alloc] initWithObjects:
                                @"user_likes", 
                                @"read_stream",
                                nil];
        [[delegate facebook] authorize:permissions];
    } else {
        logIn.hidden=YES;
        lbl.text=@"";
        lbl.text=@"Connected";
        [self showLoggedIn];
    }
}

- (void) showLoggedIn {
    NSLog(@"11 Logged In ");
    lbl.text=@"";
    lbl.text=@"Connected";
}

- (void) showLoggedOut {
    NSLog(@"11 Not Logged In ");
    lbl.text=@"";
    lbl.text=@"Not Connected";
}



- (void) viewWillAppear:(BOOL)animated
{
    //[self.navigationController setNavigationBarHidden:YES animated:animated];
    [super viewWillAppear:animated];

    AutoAppDelegate *delegate = (AutoAppDelegate *) [[UIApplication sharedApplication] delegate];
    // Check and retrieve authorization information
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
        && [defaults objectForKey:@"FBExpirationDateKey"]) {
        [delegate facebook].accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        [delegate facebook].expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }
    if (![[delegate facebook] isSessionValid]) {
       // [self showLoggedOut];
        NSLog(@"Not Connected");
    } else {
       // [self showLoggedIn];
        NSLog(@"Connected");
    }

}

viewWillAppear работает в первый раз, но когда я даю разрешения в приложении Facebook, мое приложение перезапускается, но не viewWillAppear метод!

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

Вам необходимо поместить код в делегат приложения (applicationWillEnterForeground), так как это единственное, что автоматически получает уведомление при повторном открытии приложения (ваше представление не обязательно перерисовывается)

0 голосов
/ 22 ноября 2011

Вы пытались вызвать setNeedsDisplay на представлении после того, как все сделано в Facebook?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...