0

私はsdk 3.1を使用していて、friendpickercontrollerを使用しようとしていますが、どういうわけかテーブルがアプリに空でロードされています。

これは私のコードです。理由についてヒントをいただけますか?

ありがとう

    - (void) loadFacebookFriendsPicker:(UINavigationController *)senderNavigationController {

    if (!FBSession.activeSession.isOpen) {
        // if the session is closed, then we open it here, and establish a handler for state changes
        [FBSession.activeSession openWithCompletionHandler:^(FBSession *session,
                                                             FBSessionState state,
                                                             NSError *error) {
            switch (state) {
                case FBSessionStateClosedLoginFailed:
                {
                    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                                        message:error.localizedDescription
                                                                       delegate:nil
                                                              cancelButtonTitle:@"OK"
                                                              otherButtonTitles:nil];
                    [alertView show];
                }
                    break;

                default:
                    break;
            }
        }];
    }

    if (self.friendPickerController == nil) {
        // Create friend picker, and get data loaded into it.
        self.friendPickerController = [[FBFriendPickerViewController alloc] init];
        self.friendPickerController.title = @"Pick Friends";
        self.friendPickerController.delegate = self;
    }

    [self.friendPickerController loadData];
    [self.friendPickerController clearSelection];

    [senderNavigationController pushViewController:self.friendPickerController animated:YES];

}
4

2 に答える 2

0

あなたのfriendPickerControllerは完了ハンドラーにあるべきではありませんか? あなたが今やっている方法では、完了ハンドラーが非同期で実行されるため、アクセスすると、friendPickerController は nil になります。

条件 FBSessionStateOpen を使用して、friendPickerController ログインを switch case ブロックに移動します。このようなもの:

switch (state) {
        case FBSessionStateOpen: {

if (self.friendPickerController == nil) {
        // Create friend picker, and get data loaded into it.
        self.friendPickerController = [[FBFriendPickerViewController alloc] init];
        self.friendPickerController.title = @"Pick Friends";
        self.friendPickerController.delegate = self;
    }

    [self.friendPickerController loadData];
    [self.friendPickerController clearSelection];

    [senderNavigationController pushViewController:self.friendPickerController animated:YES];

}

(ただし、ここで pushViewController を呼び出すかどうかはわかりません)

于 2012-12-23T15:41:18.197 に答える