在推送到UINavigationController时隐藏FBFriendPickerViewController导航栏

mon*_*oos 4 objective-c ios facebook-ios-sdk

呈现的实例FBFriendPickerViewController使用presentViewController:animated:completion:是非常简单和类好像它是用于那些使用案例.但是,我想将一个实例推FBFriendPickerViewController送到一个UINavigationController使用的实例上pushViewController:animated:.

请考虑以下代码作为示例:

self.fbFriendPickerController = [[FBFriendPickerViewController alloc] init];
self.fbFriendPickerController.hidesBottomBarWhenPushed = YES;
// configure stuff

[[self navigationController] pushViewController:self.fbFriendPickerController animated:YES];
Run Code Online (Sandbox Code Playgroud)

但是,问题是该实例FBFriendPickerViewController已经有一个顶部导航栏.当按下a时UINavigationController,会导致垂直堆叠两个顶部导航栏,如下面的屏幕截图所示.

双顶导航栏

一种解决方案是隐藏顶部导航栏UINavigationController,但这会产生一个尴尬的过渡,并且没有后退按钮.有关保持UINavigationController顶部导航栏但隐藏FBFriendPickerViewController顶部导航栏的最佳方法的任何想法?

mon*_*oos 6

在浏览了Github上的Facebook iOS SDK 源代码后,我发现了这一点.FBFriendPickerViewController是.的子类FBViewController.如果设置doneButtoncancelButton的任何属性FBViewControllernil,FBViewController将删除顶部导航栏.因此,以下代码有效:

self.fbFriendPickerController = [[FBFriendPickerViewController alloc] init];
self.fbFriendPickerController.hidesBottomBarWhenPushed = YES;
self.fbFriendPickerController.doneButton = nil;
self.fbFriendPickerController.cancelButton = nil;
// configure stuff

[[self navigationController] pushViewController:self.fbFriendPickerController animated:YES];
Run Code Online (Sandbox Code Playgroud)