2014-09-22 118 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