UIActionSheet - Неизвестное количество кнопок, Как узнать, что позвонить? - PullRequest
1 голос
/ 11 марта 2009

У меня есть UIActionSheet с неопределенным количеством кнопок. Мне нужно будет использовать метод делегата buttonClickedAtIndex: (или что-то подобное), чтобы решить, какой метод вызывать, когда пользователь нажимает кнопку.

Проблема в том, как мне решить, какая кнопка нажата, когда разные кнопки появятся в разных индексах в разных ситуациях?

Одно из решений состоит в том, чтобы посмотреть на название кнопки и действовать в соответствии с этим - но это уродливо, нелокализуемо и просто плохая практика.

Есть идеи?

1 Ответ

5 голосов
/ 11 марта 2009

Это тот случай, когда один контроллер может показывать несколько листов, но вы знаете, какие кнопки будут отображаться на каждом листе? Если это так, вы можете использовать свойство тега листа, чтобы различать их.

- (IBAction)showEditSheet:(id)sender {
    UIActionSheet * sheet = [[UIActionSheet alloc] initWith...];
    sheet.tag = 1;
    [sheet showInView:self.view];
}
- (IBAction)showDeleteSheet:(id)sender {
    UIActionSheet * sheet = [[UIActionSheet alloc] initWith...];
    sheet.tag = 2;
    [sheet showInView:self.view];
}
- (void)actionSheet:(UIActionSheet *)actionSheet
  clickedButtonAtIndex:(NSInteger)buttonIndex {
    switch(actionSheet.tag) {
        case 1:
            // This is the edit sheet
            switch(buttonIndex) { ... }
            break;

        case 2:
            // This is the delete sheet
            switch(buttonIndex) { ... }
            break;

        default:
            NSAssert(NO, @"Unknown action sheet");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...