タイマーが繰り返し実行されないという問題があります。iOS のコーディングはまだ初心者ですが、この Web サイトで収集した内容と他の質問への回答から、うまくいくはずです。基本的に、タイマーは timerStart ボタンが押されたときに更新を開始し、timerStop ボタンが押されたときに停止する必要があります。
サンプル コードの .h ファイルを次に示します。
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface PGSecondViewController : UIViewController <CLLocationManagerDelegate>
{
NSTimer *Timer;
IBOutlet UILabel *displayTimer;
int ticks;
}
@property (nonatomic, retain) IBOutlet UILabel *displayTimer;
-(IBAction)timerStart:(id)sender;
-(IBAction)timerStop:(id)sender;
-(void)updateTimer:(NSTimer *)theTimer;
@end
そしてheres .mファイル
#import "PGSecondViewController.h"
@interface PGSecondViewController ()
@end
@implementation PGSecondViewController
@synthesize displayTimer;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
UITabBarItem *tbi = [self tabBarItem];
[tbi setTitle:@"Start"];
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[displayTimer setText:@"00:00:00"];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)timerStart:(id)sender;
{
Timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];
}
-(IBAction)timerStop:(id)sender;
{
[Timer invalidate];
Timer = nil;
}
-(void)updateTimer:(NSTimer *)theTimer
{
if (ticks == nil)
{
ticks = 0;
}
else
{
ticks = ticks + 1;
}
[displayTimer setText:[NSString stringWithFormat:@" %d ", ticks]];
}
@end
基本的に、タイマーが1回開始され、NSLabelは0を表示しますが、その後は何も起こりません。[[NSRunLoop currentRunLoop] addTimer:Timer forMode:NSDefaultRunLoopMode] と [[NSRunLoop currentRunLoop] run] タイマーをスケジュールした後、試してみましたが、役に立ちません。
何か案は??