我在iPad 5.1(XCode 4.3)项目中正确实现UIActionSheet时遇到问题。我可以用我需要的所有物品正确填充它。列表比窗口长,但滚动条会自动出现,等等。但是,取消按钮(我认为应该在结尾处)会在我的标签栏后面隐藏一半。如下所示:
(抱歉,我不会让我发布图片)
这是我的故事板设置: 入口点是左侧的标签栏控制器,它转到另一个导航控制器(中心),右侧的视图控制器作为根视图。 http://i854.photobucket.com/albums/ab103/srVincentVega/ScreenShot2012-06-28at52713PM.png
我尝试过以各种方式呈现UIActionSheet,但这种奇怪的行为仍然存在,我无法弄清楚如何解决它
- (IBAction)cmdReason:(id)sender
{
NSArray *reasons = [AppState getInspReasons];
UIActionSheet *action = [[UIActionSheet alloc]
initWithTitle:@"Reason for Inspection"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:nil];
for (NSString *rsn in reasons)
{
[action addButtonWithTitle:rsn];
}
[action showInView:self.view];
}
我已尝试过各种方法来显示“动作” - showFromTabBar,showFromToolbar等 - 我对这个开发环境非常陌生,所以我还没有意识到这些项目如何在这个级别进行交互。有没有人建议如何正确地呈现这个?
如果已经在其他地方询问过,我很抱歉。我花了一整天时间尝试来自网络上的一些代码,包括SO。我不知道这与我的故事板布局有什么关系,或者是什么。
还有一件事 - 当我旋转模拟器时,操作表会重新绘制,但最后的位看起来很难看,就像它再也无法弄清楚如何绘制它一样。
非常感谢!
修改 我已经组建了一个非常小的项目来演示这种确切的行为。我没有一个好方法来托管zip文件,所以我把谷歌文档和共享它。链接如下。如果单击该文件,则文件下应该有一个下载选项,可以为您提供原始zip文件。
https://docs.google.com/open?id=0B7IYvy9_c_NLaEFneGc5bzc2S2c
答案 0 :(得分:1)
似乎没有真正的解决方案。如果你添加了一定数量的按钮标题并从标签栏中显示,那么它似乎是UIActionSheet
的限制。
除此之外,从标签栏显示UIActionSheet
的正确方法是使用
[action showFromTabBar:self.tabBarController.tabBar];
而不是
// Taken from your example project
AppDelegate *d = [[UIApplication sharedApplication] delegate];
UIWindow *w = d.window;
UIViewController *vc = w.rootViewController;
UITabBarController *c = (UITabBarController *)vc;
UITabBar *t = c.tabBar;
[action showFromTabBar:t];
答案 1 :(得分:0)
我想如果你有一个对标签栏控制器的引用,那么你应该能够从中提供它。您可以尝试从主窗口显示它,但我认为您不应该依赖它。
[action showInView:[[UIApplication sharedApplication] keyWindow]];
答案 2 :(得分:0)
试试这个:
CGRect r = CGRectMake(x, y, w, h); //change values to fit location of button
[actionSheet showFromRect:r inView:self.view animated:YES];
我在我的一个应用程序上使用了同样的问题并且解雇按钮显示正常。