如果IBAction中的Else声明 - iOS

时间:2013-08-08 15:16:22

标签: ios if-statement ibaction

我已经构建了if-else语句以使UIButtons之前充当切换,但这组代码似乎更具挑战性。我现在有两个独立的IBActions,一个叫做open,另一个叫做close。我想通过if-else语句将其作为一个IBAction进行切换。以下是两个IBActions的代码。

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

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

4 个答案:

答案 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];
}