Лучший способ установить заголовок кнопки для 2 состояний

Вот как я это делаю сейчас

[self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateNormal];
[self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateSelected];

Что было бы лучшим способом сделать так, чтобы название изменялось для бота UIControlStateNormal и даже если кнопка выбрана

Что я пробовал:

[self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateNormal | UIControlStateSelected];

Дело в том, что UIControlStateNormal равно 0. Так что UIControlStateNormal | UIControlStateSelected - это просто UIControlStateSelected. Это означает, что заголовок не изменяется, когда кнопка не выбрана.

3 ответа

Решение

Ну, это звучит как идеальная работа для категории на UIButton:

- (void)setTitleForAllStates:(NSString *)title
{
    for (UIControlState i = 0; i <= 3; i++)
        [self setTitle:title forState:i];
}

Вы можете использовать | выполнить bitwsie ИЛИ, вот так:

[self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateNormal | UIControlStateSelected];

Каким-то другим способом,

#define UIControlStateAll UIControlStateNormal | UIControlStateSelected | UIControlStateHighlighted

[self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateAll];
Другие вопросы по тегам