2011-06-11 16 views
1

所以我花了大量的时间尝试创建Date Picker Action Sheet(因此它看起来比普通的全屏视图更好),它只是不想要在正确的地方加载。目前,动作表弹出约25%(也许只是标签栏的高度)剪辑。带有DatePicker的UIActionSheet在Nav和Tab Bar中被剪辑

我看了几乎每一个StackOverflow主题,我可以找到,这意味着我已经尝试创建一个指向我的appdelegate并执行showInView:[[appdelegate窗口]视图]以及showFromTabBar:[self tabBarController ] tabBar和showFromTabBar [self parentViewController] tabBarController] tabBar]。 showInView或showFromTabBar的每个排列都会导致日期选择器向下移动大约标签栏的高度。

为了澄清,我启动操作表的视图是标签栏内导航栏内的视图。

UIActionSheet *dateSheet = [[UIActionSheet alloc] initWithTitle:@"Action Sheet Message" 
                 delegate:self 
               cancelButtonTitle:@"nil 
             destructiveButtonTitle:@nil 
               otherButtonTitles:nil]; 

UIDatePicker *datePicker = [[[UIDatePicker alloc] init] autorelease]; 
[dateSheet addSubview:datePicker]; 
[dateSheet showFromTabBar:[[self tabBarController]tabBar]]; 
[dateSheet release]; 

如果有人可以给我一个我做错了什么的想法,它将不胜感激。

谢谢。

+0

你有没有尝试用initWithFrame初始值设定项初始化你的datepicker?我认为这样你可以把你的日期选择器放在任何你想要的地方。 – 2011-06-11 08:01:37

+0

不,我还没有尝试过......我会考虑这一点。谢谢 – 2011-06-11 08:13:07

+0

我只是试图使用CGRect和initWithFrame ...我可以通过将y值更改为负值来获取日期选择器,但现在我无法选择日期选择器...真的难住在这里 – 2011-06-11 08:31:41

回答

0

通常UIActionSheet对象根据它必须显示的按钮来计算它的高度,在你的情况下它没有。所以它的高度是最小的,你只能看到子视图的一部分(datePicker)。解决方法是申报一个适当的框架是这样,

[dateSheet addSubview:datePicker]; 
[dateSheet showFromTabBar:[[self tabBarController]tabBar]]; 
[dateSheet setFrame:appropriateFrame]; 
[dateSheet release]; 

检查什么的appropriateFrame正确的值并使用它们。动画从底部的位置将被照顾。

+0

感谢您的建议,尽管我遇到了一些小问题,但一切似乎都正常。当我提出动作表时,它会使背景变得不透明,并且看不清我的动作表,因此看起来非常糟糕。我尝试将它设置为黑色半透明,这是我的其他用户界面,它仍然显示为黑色。任何想法如何解决这个问题?除此之外,您的解决方案最终解决了,谢谢! – 2011-06-11 17:50:10

+0

我假设你说的是UIDatePicker,它有一个不透明的黑色封面。我不认为你可以定制它。它的意思是保持原样。我看到的唯一方法是创建一个自定义对象。 – 2011-06-11 18:01:20

+0

好的,我必须仔细考虑这一点,但再次感谢! – 2011-06-11 18:06:25