Кнопка обновления обратного отсчета - PullRequest
1 голос
/ 25 сентября 2011

Я реализовал кнопку обновления в стиле 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 голосов
/ 25 сентября 2011

Для этого вам нужно реализовать NSTimer объявление int переменной count в файле .h.и инициализируйте его с count==10 в viewDidLoad/viewWillAppear по мере продвижения вашего кода.

вызовите этот метод в executeSelector

- (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;
    } 
} 

EDIT

Iдумаю, что эта ссылка определенно решит проблему.Это почти так же, как вы просили.Пожалуйста, перейдите по ссылке.http://www.richardhyland.com/diary/2008/12/21/some-cool-tips-and-tricks-for-the-iphone-sdk/

0 голосов
/ 25 сентября 2011

Вы можете использовать этот метод

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