2011-09-25 140 views
1

我已经实现了风格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?

+0

使用self.navigationItem.rightBarButtonItem.title属性来更改栏按钮的标题 – DShah

+0

经过我更新的答案... – DShah

回答

0

为此,您需要实现的NSTimer 在.h文件中声明int变量count。并根据您的代码在viewDidLoad/viewWillAppear中用count==10进行初始化。

调用此方法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/

+0

能否请你提供一个关于我使用NSTimer更新的问题的建议? –

+0

那么是什么问题?它没有运行? – DShah

0

您可以使用此方法

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

我想我可以使用的NSTimer其中有一个返回一个时间间隔的目标之前离开属性被解雇。但是,如何将按钮标题设置为每隔一秒的这个timeInterval呢? –

+0

据我所知,似乎没有直接的方法可以做到这一点。或者,您可以手动维护秒数值(计数器的种类),并在每次调用目标方法(由scheduledTimerWithTimeInterval)时增加它,并在使计时器无效时终止计数器。 – sElanthiraiyan