【发布时间】:2013-06-12 19:57:16
【问题描述】:
更新 1
我通过将条件放入dealCard 而不是startPause 来解决循环不停止的问题。
更新 1
更新 0
- (IBAction)startPause: (UIButton *)sender{
NSString *buttonTitle = sender.currentTitle;
if ([buttonTitle isEqualToString: @"Pause"]) {
[self.myButton setTitle:@"Resume" forState:UIControlStateNormal];
[timer invalidate];
}
else
{
[self.myButton setTitle:@"Pause" forState:UIControlStateNormal];
if ([self.deal length]>cardNum) {
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(dealCard)
userInfo:nil
repeats:YES];
}
else
[timer invalidate];
}
}
除了上面修改过的代码之外,我根据多人的建议为myButton 添加了一个IBOutlet 属性,并将NSTimer 从repeats:NO 更改为repeats:YES,并删除了调用@987654330 @来自dealCard。现在系统似乎可以工作了,只是“while”条件self.deal length]>cardNum 的失败没有正确地使else 子句中的NSTimer 无效。
我可以使用一些反馈来说明为什么无效不会被触发。
更新 0
Continuing this answered question,我正在尝试添加“startPause”UIButton 的“Pause”部分。点击按钮后,我希望其标题和操作为“暂停”,然后我希望其标题在“恢复”和“暂停”之间切换。
按钮是在 Storyboard 中创建的,我想不出如何为按钮创建标识符,以便我可以通过编程方式对其进行更改。我怀疑我现在需要增强按钮的 IBAction 方法以包含“发件人”,但我可能还差得很远。
目前我有以下未完成的代码。
- (IBAction)startPause: (UIButton *)sender{
NSString *buttonTitle = sender.currentTitle;
if ([buttonTitle isEqual: @"Pause"]) {
[myButton setTitle:@"Resume" forState:UIControlStateNormal]; //**** myButton is what?
if ([self.deal length]>cardNum) {
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(dealCard)
userInfo:nil
repeats:NO];
}
}
}
(我知道我还没有开始代码的“else”部分。)
如何将上面的 myButton 与 Storyboard 中的 startPause 按钮连接起来?
【问题讨论】:
-
您是否将
touch up inside事件链接到情节提要中的 IBAction ? -
您是否尝试以编程方式更改按钮的操作?你有没有把上面的代码在按下按钮时触发?
-
对不起,我之前没有看到这些 cmets。是的,我确实在情节提要中链接了
touch up inside。是的,我正在尝试以编程方式更改按钮的标题,并且在点击按钮时会触发上述代码。
标签: ios button storyboard