2014-09-22 117 views
2

iOS 8FBFriendPickerViewController顯示沒有導航欄(在iOS 7一切都很完美)。 我使用Facebook-iOS-SDK v3.9.0,但我檢查了最新的SDK,也有同樣的行爲(我運行示例項目稱爲Scrumptious)。FBFriendPickerViewController(FBTaggableFriendPickerViewController)沒有導航欄

代碼:

- (void)pickFacebookFriends{ 
    FBFriendPickerViewController *friendPicker = [[FBFriendPickerViewController alloc] init]; 
    ABAddressBookCreateWithOptions(NULL, NULL); 
    ABPersonSortOrdering sortOrdering = ABPersonGetSortOrdering(); 
    ABPersonCompositeNameFormat nameFormat = ABPersonGetCompositeNameFormatForRecord(NULL); 

    friendPicker.sortOrdering = (sortOrdering == kABPersonSortByFirstName) ? FBFriendSortByFirstName : FBFriendSortByLastName; 
    friendPicker.displayOrdering = (nameFormat == kABPersonCompositeNameFormatFirstNameFirst) ? FBFriendDisplayByFirstName : FBFriendDisplayByLastName; 
    friendPicker.fieldsForRequest = [[NSSet alloc] initWithObjects:@"picture", nil]; 
    [friendPicker loadData]; 
    [friendPicker presentModallyFromViewController:self 
              animated:YES 
              handler:^(FBViewController *sender, BOOL donePressed) { 
               if (donePressed) { 
                if (friendPicker.selection.count > 0) { 

                 [self dismissViewControllerAnimated:YES completion:nil]; 
                } 
               }}]; 
    return; 

    [self presentViewController:friendPickerController animated:YES completion:nil]; 
} 

這是截圖: enter image description here

+1

嗨,我是在同樣的情況。我沒有找到任何有用的答案,你能解決這個問題嗎?謝謝。 – szokolov 2014-09-24 07:50:19

+0

@szokolov看到我的答案。 – Shmidt 2014-09-24 08:52:46

回答

3

確保您nav.bar不掩飾和做俯臥撐。

[self.navigationController setNavigationBarHidden:NO animated:NO]; 

_taggableFriendPickerViewController = [FBTaggableFriendPickerViewController new]; 
[_taggableFriendPickerViewController loadData]; 
_taggableFriendPickerViewController.delegate = self; 
[self.navigationController pushViewController:_taggableFriendPickerViewController animated:YES]; 

#pragma mark - FBViewControllerDelegate 

///When you press on done button will call this method. 
- (void)facebookViewControllerDoneWasPressed:(FBViewController *)sender 
{ 
_arrayWithUsers = ((FBTaggableFriendPickerViewController *)sender).selection; 
} 
+0

在這種情況下,我不知道委託方法,點擊「完成」按鈕時會觸發委託方法。 – Shmidt 2014-09-24 07:58:26

+0

代表FBTaggableFriendPickerViewController它是FBViewControllerDelegate。我編輯了答案。 – Iraklii 2014-09-24 09:16:59

+0

謝謝Iraklii!就跟我想找的相同的代碼,讓FBTaggableFriendPickerViewController工作。 – 2014-12-18 14:26:12

0

您需要符合<FBViewControllerDelegate>,則:

FBFriendPickerViewController *friendPicker = [[FBFriendPickerViewController alloc] init]; 
    friendPicker.delegate = self; 
    ABAddressBookCreateWithOptions(NULL, NULL); 
    ABPersonSortOrdering sortOrdering = ABPersonGetSortOrdering(); 
    ABPersonCompositeNameFormat nameFormat = ABPersonGetCompositeNameFormatForRecord(NULL); 

    friendPicker.sortOrdering = (sortOrdering == kABPersonSortByFirstName) ? FBFriendSortByFirstName : FBFriendSortByLastName; 
    friendPicker.displayOrdering = (nameFormat == kABPersonCompositeNameFormatFirstNameFirst) ? FBFriendDisplayByFirstName : FBFriendDisplayByLastName; 
    friendPicker.fieldsForRequest = [[NSSet alloc] initWithObjects:@"picture", nil]; 
    [friendPicker loadData]; 

UINavigationController *nc = [[UINavigationController alloc]initWithRootViewController:friendPicker]; 
[self presentViewController:nc animated:YES completion:nil]; 

- (void)facebookViewControllerDoneWasPressed:(id)sender{ 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
    FBFriendPickerViewController *friendPicker = sender; 
    NSLog(friendPicker.selection.description); 
} 

結果是: enter image description here

+1

@Schmidt不幸的是,這不適合我,導航欄丟失。我無法附加圖片,請參閱此鏈接(https://www.dropbox.com/s/4v4hmo2i2aujyp0/Screen%20Shot%202014-09-24%20at%2014.37.31.png?dl=0 ) – szokolov 2014-09-24 12:42:55

+0

@szokolov試圖推動friendPicker而不是 – Shmidt 2014-09-24 12:45:43

+0

@Schmidt謝謝,這是一場戰鬥。 「完成」按鈕存在,但「取消」按鈕缺失。看到這[圖片](https://www.dropbox.com/s/tiyusce5ce7g6ta/Screen%20Shot%202014-09-24%20at%2015.32.47.png?dl=0)。 – szokolov 2014-09-24 13:35:28