iPhone / Objective-C UIActionSheet с программно добавленными кнопками - PullRequest
1 голос
/ 24 марта 2011

У меня есть UIActionSheet, который содержит кнопки, которые программно добавляются в зависимости от того, содержит ли свойство значение или нет.

Это код, который я сейчас использую:

- (IBAction)infoButtonTap:(id)sender {
    MyObject *obj = (MyObject *)[self.dataSource objectAtIndex:self.pageControl.currentPage];

    if (obj != nil) {
        UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Details"
                                                                 delegate:self
                                                        cancelButtonTitle:nil
                                                   destructiveButtonTitle:nil
                                                        otherButtonTitles:nil];

        // Programatically add Other button titles if they exist.
        if (obj.firstProperty) {
            [actionSheet addButtonWithTitle:@"Dosomething"];
        }

        if (obj.secondProperty) {
            [actionSheet addButtonWithTitle:@"Dosomethingelse"];
        }

        [actionSheet addButtonWithTitle:@"Static button"];

        actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:@"Cancel"];

        [actionSheet showInView:self.view.window];
        [actionSheet release];
    }
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    MyObject *obj = (MyObject *)[self.dataSource objectAtIndex:self.pageControl.currentPage];

    switch (buttonIndex) {
        case 0: // Dosomething
            break;
        case 1: // Dosomethingelse
            break;
        case 2: // Static button
            break;
        default:
            break;
    }
}

Проблема в том, как мне учесть тот факт, что одно из свойств может быть нулевым, и обработать его в пределах clickedButtonAtIndex:? Значения индекса изменятся. У меня есть около 4 или 5 разных кнопок, каждая из которых отображается в зависимости от того, содержит ли свойство какое-либо значение.

1 Ответ

4 голосов
/ 24 марта 2011

Самый простой способ, вероятно, состоит в том, чтобы использовать buttonTitleAtIndex: метод UIActionSheet, чтобы получить заголовок кнопки, и использовать его, чтобы определить, какое действие предпринять.

В качестве альтернативы вы можете использовать логику, аналогичную той, которую вы добавляетекнопки для точного определения значения индекса.

...