将FBFriendPickerViewController导航栏隐藏,当推入UINavigationController时。

4
使用presentViewController:animated:completion:展示一个FBFriendPickerViewController实例非常简单,这个类似乎专门为此而设计。然而,我想通过pushViewController:animated:FBFriendPickerViewController实例推入UINavigationController的实例中。
以下代码可供参考:
self.fbFriendPickerController = [[FBFriendPickerViewController alloc] init];
self.fbFriendPickerController.hidesBottomBarWhenPushed = YES;
// configure stuff

[[self navigationController] pushViewController:self.fbFriendPickerController animated:YES];

然而,问题在于FBFriendPickerViewController实例已经有一个顶部导航栏。当它被推到UINavigationController上时,会出现两个垂直堆叠的顶部导航栏,如下面截图所示。 double top nav bars 一种解决方案是隐藏UINavigationController的顶部导航栏,但这样会创建一个尴尬的转换,并且没有返回按钮。你对保留UINavigationController顶部导航栏但隐藏FBFriendPickerViewController顶部导航栏的最佳方法有什么想法吗?
1个回答

6

浏览了在Github上的Facebook iOS SDK源代码后,我找到了解决方法。 FBFriendPickerViewControllerFBViewController的子类。如果你将任何FBViewControllerdoneButtoncancelButton属性设置为nilFBViewController将移除顶部导航栏。因此,下面的代码可以工作:

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];

1
奇怪的行为。感谢修复。 - bdmontz
这对我有很大帮助,因为我也遇到了奇怪的双竖线,但是你如何处理选择呢?没有“完成”按钮了。 - Tom Spee
我已经明白了,通过编程将其添加并将目标设置为“facebookViewControllerDoneWasPressed”。 - Tom Spee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接