iPhone, различать несколько элементов управления? - PullRequest
2 голосов
/ 26 января 2010

Как лучше всего настроить пользовательский интерфейс для iPhone, чтобы различать несколько элементов одного типа (то есть 2 ползунка), в настоящее время я назначаю элементам управления уникальные «теги», а затем запрашиваю их в Xcode. Это путь или я что-то упускаю?

-(IBAction)switchChanged:(UISwitch*)senderSwitch {
    if([senderSwitch tag] == 1) {
        NSLog(@"SwitchChanged: Engines");
    }
    ...

* 1004 Гэри *

Ответы [ 2 ]

3 голосов
/ 26 января 2010

Привет, Гари! Я обычно выбираю подобный подход, хотя я предпочитаю использовать целочисленные константы вместо «сырых» чисел. Вот пример:

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;
}
1 голос
/ 26 января 2010

Если у вас нет прямой ссылки (например, IBOutlet) на элементы управления, тогда подход «тег» подходит.

Одним из преимуществ этого подхода является то, что вы можете иметь различные виды элементов управления, вызывающих один и тот же метод действия. Одним из основных недостатков этого подхода является необходимость синхронизации тегов между IB и XCode.

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