iPhone / Objective-C UIActionSheet,以编程方式添加按钮

时间:2011-03-24 04:45:01

标签: iphone objective-c uiactionsheet ibaction

我有一个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 个答案:

答案 0 :(得分:4)

最简单的方法可能是使用buttonTitleAtIndex:的{​​{1}}方法来获取按钮标题,并使用它来确定要采取的操作。

或者,您可以使用类似于添加按钮的逻辑来确定索引的确切含义。