我是iPhone应用程序的新手。我希望在每2秒按下一个按钮时显示一条消息,表明我正在使用此代码。
这个代码只工作一次。这意味着只调用一次。你能帮我解决这个问题吗?
-(IBAction)fortunecookieAction:(id)sender
{
[self performSelector:@selector(showfortune) withObject:nil afterDelay:2.0];
}
-(void)showfortune
{
int number=arc4random()%5;
switch (number) {
case 0:
fortunelabel.text=@"A holiday takes you back to the summer of '69";
break;
case 1:
fortunelabel.text=@"A meal turns erotic muffin";
break;
case 2:
fortunelabel.text=@"A massage brings";
break;
case 3:
fortunelabel.text=@"A letter in the pa special delivery";
break;
case 4:
fortunelabel.text=@"A spillage tuoo";
break;
default:
break;
}
}发布于 2011-09-15 19:00:55
如果希望每隔2秒调用一次函数,请使用NSTimer。
您将需要scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:来创建计划的计时器
发布于 2011-09-15 19:01:03
您最好的选择可能是使用NSTimer。您可以很容易地将一个设置为每两秒调用一次操作方法:
在接口(MyViewController.h)中,声明一个NSTimer属性:
@interface MyViewController : UIViewController
@property (nonatomic, retain) NSTimer *myTimer;
@end然后在你的实现中:
@synthesize myTimer;
- (void)viewDidLoad
{
[super viewDidLoad];
NSTimer *newTimer = [NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(repeatingTimerFired:) userInfo:nil repeats:YES];
self.myTimer = newTimer;
[newTimer release];
}
- (void)viewDidUnload
{
[super viewDidUnload];
if ([myTimer isValid]) {
[myTimer invalidate];
}
}
- (void)dealloc
{
[myTimer release], myTimer = nil;
[super dealloc];
}
- (void)repeatingTimerFired:(NSTimer *)sender
{
int number=arc4random()%5;
switch (number) {
case 0:
fortunelabel.text=@"A holiday takes you back to the summer of '69";
break;
case 1:
fortunelabel.text=@"A meal turns erotic muffin";
break;
case 2:
fortunelabel.text=@"A massage brings d";
break;
case 3:
fortunelabel.text=@"A letter in the pa special delivery";
break;
case 4:
fortunelabel.text=@"A spillage tuoo";
break;
default:
break;
}如果您希望此计时器在用户按下按钮后开始显示消息,只需将计时器创建移动到按钮操作方法中即可。
https://stackoverflow.com/questions/7429657
复制相似问题