倒计时刷新按钮

时间:2011-09-25 11:54:37

标签: iphone ios nstimer

我已经实现了样式UIBarSystemItem的刷新按钮,只要按下它就会被禁用10秒。

我想通过显示启用之前的剩余时间来进一步改进它。最快的方法是什么?

非常感谢提前。

按下按钮时调用。

-(void)refreshButton {
[self performSelector:@selector(enableRefreshButton) withObject:nil afterDelay:10];
self.navigationItem.rightBarButtonItem.enabled = NO;
}

-(void)enableRefreshButton {
self.navigationItem.rightBarButtonItem.enabled = YES;
}

编辑:刷新按钮的格式为UIBARSystemItemRefresh

我目前正在做这个,因为答案建议我使用NSTimer。该按钮确实启用并相应地禁用,但文本不会更改。

@inteface ... {
    int count;
}
-(void)viewDidLoad{
    UIBarButtonItem *refresh = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshButtonPressed)];          
    self.navigationItem.rightBarButtonItem = refresh;
}
-(void)refreshButtonPressed {
    //do something here...
    count = 10;
    self.myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimeLeft) userInfo:nil repeats:YES];
}

-(void)updateTimeLeft{
    count --;
    NSLog(@"%i", count);
    self.navigationItem.rightBarButtonItem.title = [NSString stringWithFormat:@"%i", count];
    self.navigationItem.rightBarButtonItem.enabled = NO;
    if (count == 0) {
        self.navigationItem.rightBarButtonItem.enabled = YES;
        [self.myTimer invalidate];
    }
}

我可以将title属性与UIBarButtonSystemItem一起使用吗?

2 个答案:

答案 0 :(得分:0)

您可以使用此方法

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

答案 1 :(得分:0)

为此,您需要实施NSTimer 在.h文件中声明int变量count。并在count==10中使用viewDidLoad/viewWillAppear初始化它,因为您的代码已经过去了。

在performSelector中调用此方法

- (void)updateCount:(NSTimer *)aTimer { 
    count--;
    self.navigationItem.rightBarButtonItem.enabled = YES;
    self.navigationItem.rightBarButtonItem.title = [NSString stringWithFormat:@"%d",count];
    NSLog(@"%i", count); 
    if (count == 0) { 
        self.navigationItem.rightBarButtonItem.enabled = NO;
        self.navigationItem.rightBarButtonItem.title = [NSString stringWithFormat:@"YOUR BAR BUTTON NAME"];
        [timer invalidate];
        timer = nil;
    } 
} 

修改

我认为这个链接肯定会解决问题。这几乎和你问的一样。请仔细阅读链接。 http://www.richardhyland.com/diary/2008/12/21/some-cool-tips-and-tricks-for-the-iphone-sdk/