【问题标题】:UIActionSheet - Unknown Number Of Buttons, How to know what to call?UIActionSheet - 未知数量的按钮,如何知道要调用什么?
【发布时间】:2009-03-11 11:21:32
【问题描述】:

我有一个 UIActionSheet,其中的按钮数量不确定。我需要使用委托方法 buttonClickedAtIndex: (或类似的方法)来决定当用户单击按钮时调用什么方法。

问题是:当不同的按钮在不同的情况下会出现在不同的索引处时,我如何决定点击哪个按钮?

一种解决方案是查看按钮的标题并对其采取行动 - 但这是丑陋的、不可本地化的并且只是不好的做法。

有什么想法吗?

【问题讨论】:

    标签: objective-c iphone uikit


    【解决方案1】:

    在这种情况下,单个控制器可能会显示多张工作表,但您知道每个工作表上会显示哪些按钮?如果是这样,您可以使用工作表的标签属性来区分它们。

    - (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");
        }
    }
    

    【讨论】:

    • iPhone 用户可以选择使用相机或图书馆。 iPod Touch 没有摄像头。我们没有更改工作表上的按钮,而是决定直接将 ipod 用户发送到库,而无需选择。所以只使用了一张带有静态按钮的工作表。问题解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2012-12-23
    • 2015-07-03
    • 2021-12-14
    • 2018-07-02
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多