单击其他按钮启用禁用按钮

时间:2014-01-01 14:19:50

标签: ios iphone objective-c uibutton

我的应用需要通过设置开始和停止时间来记录时间间隔。

我希望首先启用启动按钮,并禁用停止按钮。

单击开始按钮,我希望禁用启动按钮(以下代码完成此操作),但我希望此单击也启用停止按钮。单击停止按钮将禁用停止按钮(同样,以下代码也会处理此部分)。

我还想创建一个重置按钮,将启动和停止按钮恢复到初始状态 - 即启用启动按钮并禁用停止按钮,但我很确定我可以在我的身上找到答案如果我得到我的初始查询的答案,我自己。如果重要,我正在使用Xcode 5。

提前致谢!

    - (IBAction)startButton:(UIButton *)sender
    {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"hh:mm:ss.SS"];
        _startTimeLabel.text = [formatter stringFromDate:[NSDate date]];
        UIButton *startButton = (UIButton *)sender;
        startButton.enabled = NO;
    }

   - (IBAction)stopButton:(UIButton *)sender
   {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"hh:mm:ss.SS"];
        _stopTimeLabel.text = [formatter stringFromDate:[NSDate date]];
        UIButton *stopButton = (UIButton *)sender;
        stopButton.enabled = NO;
    }

4 个答案:

答案 0 :(得分:2)

如果按照startstop按钮的上一个答案(https://stackoverflow.com/a/20869697/3151066)中的建议添加插座,您的解决方案可能如下所示:

- (IBAction)startButton:(UIButton *)sender
{
    _startTimeLabel.text = [[self createDateFormatter] stringFromDate:[NSDate date]];
    self.start.enabled = NO;
    self.end.enabled = YES;
}


- (IBAction)stopButton:(UIButton *)sender
{
    _stopTimeLabel.text = [[self createDateFormatter] stringFromDate:[NSDate date]];
    self.stop.enabled = NO;
    self.start.enabled = YES;
}

你使用两次完全相同的格式化程序,所以你应该考虑将这段代码重构为某种方法。无论如何,如果用户点击startstop按钮,那么格式化程序的实例变量就不会创建它,因为NSDateFormatter是一个有点重要的组件(记得然后初始化)用户可以点击startstop按钮之前的此日期格式化程序。

- (NSDateFormatter *) createDateFormatter 
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"hh:mm:ss.SS"];
    return formatter;//I assume you are using ARC so we do not need to take care of releasing memory
}

要设置初始状态的重置按钮,您必须像添加start结束stop按钮一样添加其他按钮,并添加以下代码:

- (IBAction)resetButton:(UIButton *)sender
{
   [self setInitialState];
}

- (void) setInitialState 
{
    self.start.enabled = YES;
    self.end.enabled = NO;
    //probably here you will also want to reset text for labels _startTimeLabel and _stopTimeLabel
}

答案 1 :(得分:0)

从您的班级创建出口到开始和停止按钮,并使用它们来设置状态,而不是希望sender是一个按钮。

答案 2 :(得分:0)

您需要为停止按钮和开始按钮添加IBOutlet:

@property (strong, nonatomic) IBOutlet UIButton start;
@property (strong, nonatomic) IBOutlet UIButton stop;

然后,在“界面”构建器中,将每个按钮连接到相应的插座。​​

添加

@synthesize start, stop;

进入您的实施。

然后,在StartButton方法中,您可以添加

stop.enabled = YES;

和StopButton类似

start.enabled = YES;

答案 3 :(得分:0)

创建按钮后,使用布尔值启用和禁用

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

//通过添加子视图创建按钮

启用:

button.enable=YES; or button.enable=TRUE;

禁用:

button.enable=NO or button.enable=FALSE;