Эй Гари! Обычно я выбираю аналогичный подход, хотя предпочитаю использовать целочисленные константы вместо «сырых» чисел. Вот пример:
const int VIEW_TAG_A_SWITCH = 1;
const int VIEW_TAG_OTHER_SWITCH = 2;
- (IBAction)switchChanged:(UISwitch*)senderSwitch {
switch (senderSwitch.tag) {
case VIEW_TAG_A_SWITCH:
// do something
break;
case VIEW_TAG_OTHER_SWITCH:
// do something else
break;
}
}
Это делает код более информационной и поможет вам справиться с ситуациями, когда необходимо изменить значение тега UIView по какой-то причине (таким образом, вы только изменить его раз в СИБ и один раз в код).
Это также очень удобно использовать перечисления, когда вам нужно работать с группой элементов управления. Вот фиктивная одиночный выбор группы кнопок, например (что-то подобное тому, что <input type="option" />
):
enum GenderOptionButtons {
kMaleGenderOptionButton = 10,
kFemaleGenderOptionButton,
kUndefinedGenderOptionButton,
NUM_GENDER_OPTION_BUTTONS
}
- (IBAction)buttonDidTouchUpInside:(UIButton *)senderButton {
for (int i = kMaleGenderOptionButton; i < NUM_GENDER_OPTION_BUTTONS; i ++) {
[(UIButton *)[self.view viewWithTag:i] setSelected:NO];
}
senderButton.selected = YES;
}
Я использую 'enum' для подобных целей. Он отлично работает и упрощает ведение тегов. –
Спасибо, Иван, просто я ясно, что объявление enum пойдет в файл * .h правильно? – fuzzygoat
Это зависит от того, что вам действительно нужно. Для локального использования этого достаточно, чтобы просто объявить/определить перечисления в файле реализации (.m). –