繁体   English   中英

如果IBAction中的其他语句-iOS

[英]If Else Statement in IBAction - iOS

我已经构造了if-else语句来使UIButton之前充当切换按钮,但是这组代码似乎更具挑战性。 我现在有2个独立的IBAction,一个称为打开,另一个称为关闭。 我想使它成为一个通过if-else语句进行切换的IBAction。 这是两个IBAction的代码。

- (IBAction)actionOpen:(id)sender {
    [self.flatDatePicker show];
}

- (IBAction)actionClose:(id)sender {
    [self.flatDatePicker dismiss];
}

设置属性或类似的东西...

// 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上使用一个属性(该属性会告诉您该属性是否可见),而不是其他属性。

您不必为此创建自己的属性,平面选择器已经定义为:

@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];
    } 
}

在标题中为datePickerShowing创建BOOL类型

@property (nonatomic,assign) BOOL datePickerShowing;

将其合成到您的.m文件中

@synthesize datePickerShowing;

在您的init方法中将此设置为NO。 datePickerShowing = NO;

在您的IBAction中:

if (datePickerShowing) {
    [flatDatePicker dismiss];
    datePickerShowing = NO;
} else {
    [flatDatePicker show];
    datePickerShowing = YES;
}

我可以想象self.flatDatePicker是一个UIDatePicker对象,该对象继承自UIView 不需要单独的状态标志,只需检查UIView.hidden属性:

- (IBAction)actionToggle:(id)sender {
    if (self.flatDatePicker.hidden)
        [self.flatDatePicker show];
    else
        [self.flatDatePicker dismiss];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM