0

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

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

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

4 回答 4

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 上的属性来告诉您它是否可见,而不是附加属性。

于 2013-08-08T15:20:48.153 回答
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];
    } 
}
于 2013-08-08T15:27:52.920 回答
1

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

- (IBAction)actionToggle:(id)sender {
    if (self.flatDatePicker.hidden)
        [self.flatDatePicker show];
    else
        [self.flatDatePicker dismiss];
}
于 2013-08-08T15:29:09.570 回答
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;
}
于 2013-08-08T15:21:01.787 回答