Мне трудно понять следующую проблему:
Этот код делает то, что, как я думаю, должен делать: инициализировать значки, перемещать его после инициализации и обновлять метку на значке:
- Значок инициализации
- Установить значение 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;