Ios 在导航控制器上按EKEventViewController并返回后,将出现白色底部栏

Ios 在导航控制器上按EKEventViewController并返回后,将出现白色底部栏,ios,ios8,uinavigationcontroller,ekevent,Ios,Ios8,Uinavigationcontroller,Ekevent,我正在开发一个应用程序,显示从iOS日历中获取的事件表。单击表中的一行时,我希望使用EKEventViewController显示事件信息。以下是事件表的外观: 单击此列表中的事件时,我使用以下代码推送EKEventViewController: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { EKEventViewController *event

我正在开发一个应用程序,显示从iOS日历中获取的事件表。单击表中的一行时,我希望使用EKEventViewController显示事件信息。以下是事件表的外观: 单击此列表中的事件时,我使用以下代码推送EKEventViewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    EKEventViewController *eventViewController = [EKEventViewController new];
    eventViewController.event = [self.events objectAtIndex:[indexPath row]];
    [self.navigationController pushViewController:eventViewController animated:YES];
    [self.navigationController setNavigationBarHidden:NO];
    [tableView reloadData];
}
我进入事件信息屏幕(正是我想要的):

但是,当我现在单击左上角的“后退”按钮时,我会看到以下屏幕:

请注意底部的白色条。为了摆脱这个条,我现在必须关闭应用程序,返回主菜单和应用程序的其他部分没有任何效果(每个屏幕只是“缩小”以适应现在更小的空间,可能是因为使用了自动布局)

这种情况不会发生在iOS 7上,因为在iOS 7上,这个白色条永远不会出现,只有在iOS 8上才会出现(8.2测试版)。这个酒吧是什么?如何摆脱它

编辑:我注意到当屏幕截图发布在StackOverflow上时,“白色”栏看起来是灰色的,而在设备上它肯定是白色的

EDIT2:底部按钮的约束图片:

我从未发现白条到底是什么,但我最终以模态的方式展示了EKEventViewController,效果非常好:

解决这个问题的另一种方法是通过故事板。 在情节提要上创建ViewController对象 使其类EKEventViewController(无需代码或类文件) 嵌入到导航控制器中。 从要调用EKEventViewController的视图控制器到NavigationController创建详细信息序列

然后使用performsguewithidentifier(“EKEventViewController”,发送方:发送方)

像这样设置prepareForSegue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "EKEventViewController" {
        let controller = (segue.destination as! UINavigationController).topViewController as! EKEventViewController
        controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
        controller.navigationItem.leftItemsSupplementBackButton = true
        controller.event          = event
        controller.allowsEditing  = true
        self.splitViewController?.toggleMasterView()
    }
}

我终于弄明白在这种情况下发生了什么。我通常不使用
UIToolbar
,这就是为什么我没有很快识别出这一点,但是
UINavigationController
有一个可选的工具栏,并且有一个函数
setToolbarHidden()

从部门

导航控制器对象管理其视图层次结构中的可选工具栏。显示时,此工具栏从活动视图控制器的toolbarItems属性获取其当前项目集。[…]如果不是所有视图控制器都支持工具栏项,则代理对象可以调用此方法在后续的推送和弹出操作中切换工具栏的可见性

因此,在推送
EKEventViewController
的视图控制器的
viewwillbeen()
中,调用:

self.navigationController?.setToolbarHidden(true,动画:false)

EKEventViewController
按到堆栈调用上时:

self.navigationController?.setToolbarHidden(false,动画:true)


您可以根据自己的喜好调整
动画
参数。

是否添加了约束?如果是..然后发布…您希望我发布哪些约束?底部面板约束?当您转到一个控制器到另一个控制器时,底部面板闪烁?我看不到闪烁,但是我会马上发布一张约束的图片。好的..只要检查一下..你能发布底部空间约束的细节吗..意思是双击它发布约束的细节