我正在嘗試創建一個應用程序,其中一個功能是同時處理多個事件的功能。我在視圖上有兩個UILabels和兩個UIButton,並且有代碼可以在按下相應的按鈕時使一個標籤開始計時。正如你可以從我的代碼中看到的,我有兩個的一切:無法創建兩個秒錶
#import "ViewController.h"
@interface ViewController()
@property (weak, nonatomic) IBOutlet UILabel *display;
- (IBAction)startPressed:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *display2;
- (IBAction)startPressed2:(id)sender;
@end
@implementation ViewController {
bool start;
bool start2;
NSTimeInterval time;
NSTimeInterval time2;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.display.text = @"0:00";
self.display2.text = @"0:00";
start = false;
start2 = false;
}
-(void) update1 {
if (start == false) {
return;
}
NSTimeInterval currentTime = [NSDate timeIntervalSinceReferenceDate];
NSTimeInterval elapsedTime = currentTime - time;
int minutes = (int)(elapsedTime/60.0);
int seconds = (int)(elapsedTime = elapsedTime - (minutes * 60));
self.display.text = [NSString stringWithFormat:@"%u:%02u", minutes, seconds];
[self performSelector:@selector(update1) withObject:self afterDelay:0.1];
}
-(void) update2 {
if (start2 == false) {
return;
}
NSTimeInterval currentTime2 = [NSDate timeIntervalSinceReferenceDate];
NSTimeInterval elapsedTime2 = currentTime2 - time2;
int minutes2 = (int)(elapsedTime2/60.0);
int seconds2 = (int)(elapsedTime2 = elapsedTime2 - (minutes2 * 60));
self.display2.text = [NSString stringWithFormat:@"%u:%02u", minutes2, seconds2];
[self performSelector:@selector(update2) withObject:self afterDelay:0.1];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)startPressed:(id)sender {
if (start == false) {
start = true;
time = [NSDate timeIntervalSinceReferenceDate];
[sender setTitle:@"Stop" forState:UIControlStateNormal];
[self update1];
}else {
start = false;
[sender setTitle:@"Start" forState:UIControlStateNormal];
}
}
- (IBAction)startPressed2:(id)sender {
if (start2 == false) {
start2 = true;
time2 = [NSDate timeIntervalSinceReferenceDate];
[sender setTitle:@"Stop" forState:UIControlStateNormal];
[self update2];
}else {
start2 = false;
[sender setTitle:@"Start" forState:UIControlStateNormal];
}
}
@end
然而,當我運行應用程序,無論我按哪個按鈕,第一個標籤開始計數。請幫忙,我不能讓兩個計時器同時運行。
謝謝!
'display'和'display2'被連接到相同的標籤。 –
能否詳細說明一下?我不完全明白你的意思。 – stevethedude
在某些方法的開始處使用斷點或NSLog來查看在按下按鈕時會調用哪些斷點或NSLog。 –