我的应用需要通过设置开始和停止时间来记录时间间隔。
我只想首先启用开始按钮,禁用停止按钮。
在单击开始按钮时,我希望禁用开始按钮(以下代码可以很好地完成此操作),但我希望通过单击也可以启用停止按钮。单击停止按钮将使停止按钮禁用(同样,以下代码也处理这部分)。
我还想创建一个重置按钮,将开始和停止按钮返回到它们的初始状态 - 即启用开始按钮和禁用停止按钮,但我很确定我可以在我的拥有如果我得到我最初查询的答案。如果重要的话,我正在使用 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;
}
最佳答案
如果您按照上一个答案 ( https://stackoverflow.com/a/20869697/3151066 ) 中的建议为 start
和 stop
按钮添加 socket ,您的解决方案可能如下所示:
- (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;
}
您两次使用了完全相同的格式化程序,因此也许您应该考虑将这段代码重构为某种方法。无论如何,最好为该格式化程序设置一个实例变量,而不是在每次用户单击 start
或 stop
按钮时都创建它,因为 NSDateFormatter
是有点重的组件(请记住在用户单击 start
或 stop
按钮之前初始化此日期格式化程序)。
- (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
end 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
}
关于ios - 通过单击不同的按钮启用禁用的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20869536/