Обновление взглядов из методов IBAction, требуется уточнение - PullRequest
0 голосов
/ 20 марта 2012

Мне трудно понять следующую проблему:

Этот код делает то, что, как я думаю, должен делать: инициализировать значки, перемещать его после инициализации и обновлять метку на значке:

  • Значок инициализации
  • Установить значение 24 (или другое число)
  • Добавить UIView на экран
  • Изменить местоположение UIView
  • Изменить значение на xx
[self initializeCardBadges];
[gameView addSubview:unplayedCountBadge];

[unplayedCountBadge setFrame:CGRectMake(315, 5, 25, 25)]; // Moves
unplayedCountBadge.badgeText = @"xx";                     // Updates label

, где initializeCardBadges выполняет следующие действия:

self.unplayedCountBadge = [CustomBadge customBadgeWithString:[NSString stringWithFormat:@"%d", decks.masterDeck.count]
                                        withStringColor:[UIColor whiteColor] 
                                           withInsetColor:[UIColor redColor] 
                                         withBadgeFrame:YES 
                                    withBadgeFrameColor:[UIColor whiteColor] 
                                              withScale:1.0
                                             withShining:YES];  

[self.unplayedCountBadge setFrame:CGRectMake(435, 5, 25, 25)];

Как только значок будет на месте, мы можем свободно перемещать его и изменять текст. Как уже упоминалось выше, это работает.

Когда я добавляю новый метод для обновления ярлыков, как и ожидалось, все снова хорошо

[self initializeCardBadges];
[gameView addSubview:unplayedCountBadge];

[unplayedCountBadge setFrame:CGRectMake(315, 5, 25, 25)]; // Moves badge to location
[self updateBadgeLabelForUnplayedCards];                  // Updates label

-(void) updateBadgeLabelForUnplayedCards {
    unplayedCountBadge.badgeText=@"yy";    
}

Но .. когда я добавляю ту же логику к -(IBAction) doneWithThisRoundDealCards:(id)sender, при нажатии кнопки ..

[unplayedCountBadge setFrame:CGRectMake(315, 5, 25, 25)]; // Moves
[self updateBadgeLabelForUnplayedCards];                  // Value NOT set

Кроме того, когда я заменяю вышесказанное явными командами, можно наблюдать то же самое: значок перемещает местоположение, значение не устанавливается

[unplayedCountBadge setFrame:CGRectMake(315, 5, 25, 25)];  // Moves
self.unplayedCountBadge.badgeText=@"tt";                   // Value NOT set

Расположение значка меняется, но ... текст не обновляется. Почему это?

Я повторно использую этот код для создания значка.

Обратите внимание, что BadgeText определяется как простое свойство, как показано здесь

@property(nonatomic,retain) NSString *badgeText;

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

Я не знаю, почему вы не используете метод - (void) autoBadgeSizeWithString:(NSString *)badgeString для изменения текста значка, но я вижу в этом методе одну вещь: он вызывает [self setNeedsDisplay], который вам не кажется.

3 голосов
/ 20 марта 2012

Вы пробовали

[unplayedCountBadge setNeedsDisplay];

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...