我已经构建了if-else
语句以使UIButtons之前充当切换,但这组代码似乎更具挑战性。我现在有两个独立的IBActions,一个叫做open,另一个叫做close。我想通过if-else
语句将其作为一个IBAction进行切换。以下是两个IBActions的代码。
- (IBAction)actionOpen:(id)sender {
[self.flatDatePicker show];
}
- (IBAction)actionClose:(id)sender {
[self.flatDatePicker dismiss];
}
答案 0 :(得分:3)
设置属性或类似内容......
// in the private extension
@property (nonatomic) BOOL flatDatePickerOpen;
然后做这样的事......
- (IBAction)toggleFlatDatePicker {
if (self.flatDatPickerOpen) {
[self.flatDatePicker dismiss];
self.flatDatePickerOpen = NO;
} else {
[self.flatDatePicker show];
self.flatDatePickerOpen = YES;
}
}
您也不必指定操作的发件人部分。如果您没有使用它,那就没有必要了。
或者,使用flatDatePicker上的属性来告诉您它是否可见而不是附加属性。
答案 1 :(得分:3)
您不必为此创建自己的属性,平板选择器已经定义为:
@property(nonatomic,readonly) BOOL isOpen; // read only property, indicate in datepicker is open.
因此...
- (IBAction)toggleFlatDatePicker {
if (self.flatDatePicker.isOpen) {
[self.flatDatePicker dismiss];
}else{
[self.flatDatePicker show];
}
}
答案 2 :(得分:1)
在BOOL
datePickerShowing
类型
@property (nonatomic,assign) BOOL datePickerShowing;
在.m文件中合成它
@synthesize datePickerShowing;
在init方法中将此项设置为NO。 datePickerShowing = NO;
在您的IBAction中:
if (datePickerShowing) {
[flatDatePicker dismiss];
datePickerShowing = NO;
} else {
[flatDatePicker show];
datePickerShowing = YES;
}
答案 3 :(得分:1)
我认为self.flatDatePicker
是一个UIDatePicker
对象,它继承自UIView
。不需要单独的状态标志,只需检查UIView.hidden
属性:
- (IBAction)actionToggle:(id)sender {
if (self.flatDatePicker.hidden)
[self.flatDatePicker show];
else
[self.flatDatePicker dismiss];
}