如果我重复了之前的问题,我很抱歉,但我似乎找不到它。我甚至在演示项目中重新创建了我的问题,以便你们中的任何人想要亲自查看,尽管我不知道我应该在哪里发布它。
我有一个基于xibless UINavigationController的应用程序。我的一些子视图控制器在顶部右侧有一个按钮,然后显示UIActionSheet。我的应用程序为iPhone和iPad设计,因此当我准备显示UIActionSheet时,我会执行以下操作:
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:@"%@ Menu", [self title]] delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Email", @"Print", nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleDefault];
if ([actionSheet respondsToSelector:@selector(showFromBarButtonItem:animated:)])
[actionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES];
else [actionSheet showInView:[self view]];
[actionSheet release];
在iPad上,我试图显示附加到右侧栏按钮的UIActionSheet,在iPhone上它应该从底部滑入。所有这些都非常完美。
不幸的是,如果您在iPad上点击按钮并显示菜单,但然后在应用程序左上方点击返回按钮,则菜单不会消失。相反,UINavigationController会忠实地弹回,并且UIActionSheet仍然存在。如果您尝试在菜单上点击某些内容,当然会崩溃。如果用户在屏幕上点击其他任何东西而不是“返回”按钮,则菜单会正确关闭。
如果您在iPhone上尝试此测试,则一切正常。没有问题。
我的演示项目有一个AppDelegate和一个ViewController,就这些。AppDelegate构建了一个NSDictionary的NSDictionaries,只是为了让我有一个模型可以递归演示问题。 ViewController显示字典的所有键,如果相应的值是NSDictionary,则可以点击它进行深入钻取。