选择器视图未出现在第一次尝试单击按钮时
Posted
技术标签:
【中文标题】选择器视图未出现在第一次尝试单击按钮时【英文标题】:Picker View not appearing on 1st attempt of button click 【发布时间】:2011-12-23 14:27:14 【问题描述】:我在单元格的最右侧有一个按钮。
现在我有一个选择器视图,需要在单击按钮时显示。
使用以下代码可以正常工作:
-(IBAction)buttonPressed:(id)sender
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
CGAffineTransform transform = CGAffineTransformMakeTranslation(0, 200);
monthPicker.transform = transform;
[self.view addSubview:monthPicker];
[UIView commitAnimations];
但是我搜索了让选择器视图在可见时隐藏并在没有选择器视图时显示,我找到了解决方案.....在上述方法中添加了以下代码:
monthPicker.hidden = [monthPicker isHidden] ?否:是;
现在,当我单击按钮时,第一次尝试时选择器视图未显示,但从第二次尝试及以后开始,它工作得很好。
有什么建议吗?
【问题讨论】:
【参考方案1】:@Padavan 的答案应该可以,但是如果您想要“在动画中”的淡入淡出效果,则隐藏属性不起作用。您必须改用 UIView.alpha 属性。这是我的示例代码。
- (void) viewDidLoad
[super viewDidLoad];
/////////////////////////////////////////////////
// ... Initialize your month picker here //
/////////////////////////////////////////////////
monthPicker.alpha = 0;
[self.view addSubview:monthPicker];
- (void)buttonPressed:(id)sender
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
CGAffineTransform transform = CGAffineTransformMakeTranslation(0, 200);
monthPicker.transform = transform;
monthPicker.alpha = monthPicker.alpha * (-1) + 1;
[UIView commitAnimations];
【讨论】:
先生。大麦 非常感谢您的回答,效果很好...再次非常感谢....提前祝圣诞快乐 :)【参考方案2】:monthPicker 最初是隐藏的吗?第一次调用方法时。如果没有 - 它隐藏起来,你看不到它。也许你需要在 init 方法中设置monthPicker.hidden=YES
。
【讨论】:
非常感谢您的回答...是的,Padavan 先生,最初选择器视图是隐藏的,单击按钮时它必须出现...。所以正如您所建议的,我已将选择器视图初始化为隐藏在按钮操作方法本身中将属性设置为 YES,它在第二次单击时显示但现在没有消失......还有 -(id)init 方法我将隐藏状态指定为 YES,但它不起作用请帮助我......跨度> 我不知道您为什么在“按钮操作”中也将隐藏属性设置为 YES。正如 Padavan 所说,您只需将 init 方法中的 monthPicker.hidden=YES 添加到原始代码中。 附带说明,我认为您应该在 init 方法中调用 [self.view addSubview:monthPicker] (我更喜欢在 loadView 或 viewDidLoad 中)。否则,每次单击按钮时都会将相同的选取器视图添加到父视图,这是完全没有必要的。 @barley 对不起,我试图在 -(id)initWithNibName 方法中进行初始化,而不是在 viewDidLoad 方法中分配它,很抱歉,非常感谢您的帮助并纠正我的正确方向:)跨度> @Padavan 对不起,我误解了答案,对你说的太谨慎了,谢谢,我赞成你的回答并纠正了我的错误:D以上是关于选择器视图未出现在第一次尝试单击按钮时的主要内容,如果未能解决你的问题,请参考以下文章