我试图获得一个按钮来创建一个NSTimer,然后调用一个函数(refreshView)来刷新UI元素,但是我遇到了问题,我不确定问题出在哪里。方法签名是错误的吗?或者我是否将NSRunLoop部分弄错了?还是只是可怕的基地?任何帮助表示赞赏。
-(IBAction)reload:(id)sender{
NSInvocation *displayInvocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(refreshView)]];
[displayInvocation setTarget:self];
NSTimer *slideShowTimer = [NSTimer scheduledTimerWithTimeInterval:5.0
invocation:displayInvocation
repeats:YES];
[slideShowTimer fire];
NSRunLoop * a = [NSRunLoop currentRunLoop];
[a addTimer:slideShowTimer forMode:NSRunLoopCommonModes];}
-(void)refreshView{
[slideshow1 displayWithView:MajorImageView topicLabel:TopicLabel];
}
答案 0 :(得分:2)
你的代码似乎很复杂。你想(1)启动定时器定期调用[refreshView],或者(2)稍后调用它。
对于(1),只需使用
设置计时器[NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)seconds
target:(id)target
selector:(SEL)aSelector
userInfo:(id)userInfo
repeats:(BOOL)repeats]
无需使用方法调用,目标/操作就足够了
对于(2),如果你想稍后再打电话,
[NSObject performSelector:(SEL)aSelector
withObject:(id)anArgument
afterDelay:(NSTimeInterval)delay]