5

我使用Split View-based Application模板创建了一个新的应用程序。UISplitViewController中的ActionSheet在纵向模式中的行为与横向模式不同

然后我添加了一个动作按钮到rootViewController导航控制器,名为actionButton。

当按下按钮时,我显示像这样的ActionSheet:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
    delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil 
    otherButtonTitles:@"Admin Functions", @"Refresh Data", nil]; 
[actionSheet showFromBarButtonItem:actionButton animated:YES]; 
[actionSheet release]; 

后我按下按钮时在横向模式下它显示的操作片材,其中所指向的按钮酥料饼(如我预计它):

Landscape Mode

然而,在人像模式,它看起来完全不同的菜单从RootViewController的酥料饼就像它在iPhone上的底部出现:

Portrait Mode

我的问题是,如何让我的ActionSheet出现在顶部,而在纵向模式,就像它在横向模式时?

由于这是一个“实用程序菜单”,它并不直接与显示的数据绑定,所以它不应该是popover的一部分。

回答

3

此行为是有意设计的,如果它是纵向模式下的弹出窗口,那么您将有2级弹出窗口。

通过实施您自己的UIPopover版本或使用已经写好的人(WEPopover),这在技术上是可行的。

但是,这是一个糟糕的设计选择。你说这些功能与数据无关,但是有一种是“刷新数据”。我会刷新图标替换操作按钮,如一个苹果在使用“查找我的朋友”:

Refresh Button

另外,“管理功能”,如果不直接相关的数据列表,也许需要一个新的家,也许你的应用程序的主要观点?很难说在不知道更多关于结构的情况下最好放在哪里。

+0

感谢您的回复!不幸的是,我展示的图片只是模型,只是简单地展示它正在做什么,具体行为是不同的。实际应用与邮件应用非常相似,左侧视图显示列表,右侧视图显示详细信息。由于菜单项作为一个整体(而不是细节项)引用应用程序,所以我觉得它属于左视图。这个页面是我的应用程序的主视图,所以我需要找到放置菜单项的地方。由于菜单上有5-6个项目,因为房间有限,所以它确实需要作为下拉菜单。 – lnafziger

+0

问题依然存在,您有两个级别的UIPopover(列表和菜单)。如果你愿意避免在纵向模式下弹出列表,并且只存在于左侧,我建议使用[MSSplitViewController](http://mattgemmell.com/2010/07/31/mgsplitviewcontroller-for-ipad /)而不是使用UISplitViewController。但是,如果不知道更多的应用细节,就很难设计出更好的行动方案。 –

+0

我想我可以使用模式而不是弹出窗口...... – lnafziger

0

另一种可能性是,您可以将操作按钮从根视图控制器的右侧边缘移动到细节视图控制器的左侧边缘。

例如,如果动作按钮位于第一个屏幕快照中垂直条右侧(意思是它位于详细视图控制器栏的左侧边缘),那么当您旋转到纵向模式时,它会在第二个屏幕快照中的事件按钮右侧出现。您仍然可以调用UIActionSheet的showFromBarButtonItem:animated方法,该方法将以弹出模式显示您的操作表。

还有一个问题,你是否真的想在屏幕上同时弹出两个弹出窗口。但如果你这样做,这是如何做到这一点。

+0

从适用于iOS的视图控制器编程指南:“注意:在显示其他视图控制器之前,您应该始终关闭可见的弹出窗口。如何在应用程序中使用弹出窗口,请参阅iOS人机界面指南中的“Popover(仅限iPad)”。 –

相关问题