ActionSheet无法正常显示

时间:2011-07-27 04:21:59

标签: ios uiactionsheet

我有这个代码从NSMutableArray从NSDictionary获取NSStrings,但问题是它没有正确显示。 这是代码:

UIActionSheet *playingSheet = [[UIActionSheet alloc] initWithTitle:@"Hi" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
     for(NSDictionary *dict in accounts) {
         NSString *name = [dict objectForKey:@"Name"];
         [playingSheet addButtonWithTitle:name];
     }
     [playingSheet showInView:self.view];
     [playingSheet release];

问题在于我的情况,self.view是parentView的子视图,是从XIB加载的,不是全屏。所以问题是我的动作表就像是iPhone屏幕宽度的一半,甚至没有触及屏幕的底部。 在我的情况下,我将如何修复它以使其成为最顶层的视图(以便用户可以正确地看到它),以及常规actionSheet应该看起来的方式?

谢谢!

编辑:这是修复:

[playingSheet showInView:[UIApplication sharedApplication].keyWindow];

2 个答案:

答案 0 :(得分:3)

您需要将操作表的框架设置为

[playingSheet setFrame:CGRectMake(0, theHeightYouWant, 320, yourDesiredHeight)];
“theHeightYouWant”是您必须向上/向下移动操作表以将其置于屏幕上的正确位置的高度。您可以通过反复试验来更改此设置。例如,如果您的self.view位于屏幕的下半部分,则“theHeightYouWant”将为负数!

答案 1 :(得分:2)

根据代码的设置方式,您可以尝试使用self.parentViewController.viewself.view.windowself.view.superview或其他任何内容。如果您想要更详细的答案,则需要提供更多信息。