Ios 通过单击其他按钮启用禁用的按钮
我的应用程序需要通过设置开始和停止时间来记录时间间隔 我希望一开始只启用“开始”按钮,而禁用“停止”按钮 单击start按钮时,我希望禁用start按钮(下面的代码可以完成这一操作),但我希望单击此按钮也可以启用stop按钮。单击stop按钮将禁用stop按钮(同样,下面的代码也会处理这一部分) 我还想创建一个重置按钮,将启动和停止按钮返回到其初始状态-即启动按钮启用和停止按钮禁用,但我非常确定,如果我得到初始查询的答案,我可以自己解决这个问题。如果有必要的话,我使用的是Xcode 5 提前谢谢Ios 通过单击其他按钮启用禁用的按钮,ios,iphone,objective-c,uibutton,Ios,Iphone,Objective C,Uibutton,我的应用程序需要通过设置开始和停止时间来记录时间间隔 我希望一开始只启用“开始”按钮,而禁用“停止”按钮 单击start按钮时,我希望禁用start按钮(下面的代码可以完成这一操作),但我希望单击此按钮也可以启用stop按钮。单击stop按钮将禁用stop按钮(同样,下面的代码也会处理这一部分) 我还想创建一个重置按钮,将启动和停止按钮返回到其初始状态-即启动按钮启用和停止按钮禁用,但我非常确定,如果我得到初始查询的答案,我可以自己解决这个问题。如果有必要的话,我使用的是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;
}
创建从类到“开始”和“停止”按钮的出口,并使用这些按钮设置它们的状态,而不是希望
sender
是一个按钮。您需要为“停止”按钮和“开始”按钮添加一个IBOutlet:
@property (strong, nonatomic) IBOutlet UIButton start;
@property (strong, nonatomic) IBOutlet UIButton stop;
然后,在Interface builder中,将每个按钮连接到相应的插座
加
在您的实现中
然后,在StartButton方法中,可以添加
stop.enabled = YES;
和停止按钮类似
start.enabled = YES;
创建后按钮用于启用和禁用布尔值
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//通过添加子视图创建按钮
启用:
button.enable=YES; or button.enable=TRUE;
禁用:
button.enable=NO or button.enable=FALSE;
如果您按照上一个答案()中的建议为
start
和stop
按钮添加插座,您的解决方案可能如下所示:
- (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
按钮之前初始化此日期格式化程序)
要使用重置按钮设置初始状态,您必须添加另一个按钮,就像对start
endstop
按钮所做的那样,并添加以下代码:
- (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
}
给出Xib或故事板中每个UIButton的标签,所有按钮动作都转换为普通按钮动作,并使用开关盒,尝试此操作此操作可处理重置按钮。谢谢它正在修复单击每个按钮后出现的问题(您没有启用第二个按钮);)正如您在另一个答案中提到的,可以在
viewDidLoad
中调用setInitialState
。您还可以在那里初始化NSDateFormatter
的一些实例,并使用它代替createDateFormatter
方法@user2872997我认为您的问题已经有了答案,因此您可能应该标记出最好的答案,因为在寻找解决方案时,其他人会更容易找到答案;)@这是你问题的答案吗?如果是这样,请标记它,使其更清楚地为未来的答案寻求者,谢谢一个交易。谢谢你的帮助!完美的我仍在试图找出如何设置它,使停止按钮开始禁用,但我通过这里的其他答案之一找到了答案,在viewDidLoad中设置初始状态。我会发布代码,但我在手机上。当我的手机上只有可用的互联网时,没有什么比编写应用程序更好的了:/谢谢!
- (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
}
- (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
}