Нужна помощь с NSTimer и UISegmentedControl - PullRequest
1 голос
/ 22 июля 2011

У меня есть следующий код, который работает для представления по таймеру.

Проблема в том, что когда я меняю сегменты, когда таймер уже работает, метка сбрасывается, но текст кнопки по-прежнему остается остановленным, янужно, чтобы остаться "начать" вместо этого.Я попытался сделать это вручную, выполнив self.timer.titleLabel.text = @"Start";, но по какой-то причине он отображается как "S...t" вместо "Start".

- (IBAction)startStop:(UIButton *)sender 
{
    if ( self.myTimer ) 
    {
        [self.myTimer invalidate];
        self.myTimer = nil;

        [sender setTitle:@"Start" forState:UIControlStateNormal];
    } 
    else 
    {
        self.myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(handleTimer:) userInfo:nil repeats:YES];
        [sender setTitle:@"Stop" forState:UIControlStateNormal];
    }
}

- (void)handleTimer:(NSTimer *)timer 
{
    self.counter--;
    self.timerLabel.text = [NSString stringWithFormat:@"%ld", self.counter];

    if ( self.counter <= 0 ){
        [self.myTimer invalidate];
        self.myTimer = nil;
    }
}

- (IBAction)reset:(id)sender 
{
    self.counter = self.counterSegment;
    self.timerLabel.text = timerCount;
}

- (void)segmentedControl:(SVSegmentedControl*)segmentedControl didSelectIndex:(NSUInteger)index
{
    if ( self.myTimer ) 
    {
        [self.myTimer invalidate];
        self.myTimer = nil;
        self.timer.titleLabel.text = @"Start";
    }   
    if (index == 0)
    {
        NSLog(@"15 sec");
        self.timerCount = @"15";
        self.counterSegment = 15;
    }
    else if (index == 1)
    {
        NSLog(@"30 sec");
        self.timerCount = @"30";
        self.counterSegment = 30;
    }
    else if (index == 2)
    {
        NSLog(@"60 sec");
        self.timerCount = @"60";
        self.counterSegment = 60;
    }
    self.counter = self.counterSegment;
    self.timerLabel.text = timerCount;
}

1 Ответ

0 голосов
/ 22 июля 2011

Если метка кнопки гласит «S ... t» вместо «Пуск», то вам нужно уменьшить шрифт или вызвать adjustsFontSizeToFitWidth, например,

button.titleLabel.font = [UIFont systemFontOfSize: 10];

или

button.titleLabel.adjustsFontSizeToFitWidth = YES;
...