【问题标题】:how can I put particular action as I select any row of UIPickerView?当我选择 UIPickerView 的任何一行时,我该如何执行特定操作?
【发布时间】:2011-02-09 09:23:45
【问题描述】:

我正在编写类似

的代码
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

    int n=row+1;
    if(row == 0)
        return [NSString stringWithFormat:@"%d minute", n];
    return [NSString stringWithFormat:@"%d minutes", n];
}

现在我想在选择任何行时启动计时器,例如第 5 行有 5 个薄荷糖,所以我想用 5 个薄荷糖启动计时器,那么我该怎么办,如何选择特定的行并按下按钮和计时器启动参加那个活动?

【问题讨论】:

    标签: iphone objective-c row uipickerview


    【解决方案1】:

    如果你以后去 google 并输入你的班级名称和“班级参考”,你通常可以在苹果网站上找到你需要的信息。

    例如,我刚上谷歌并输入“UIPickerView 类参考”并到达这里:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIPickerView_Class/Reference/UIPickerView.html

    如果您阅读该网站上的说明,它会显示“代理必须采用 UIPickerViewDelegate 协议”,如果您点击那里,它会在任务下显示:

    响应行选择 –

    pickerView:didSelectRow:inComponent:
    

    这是您需要实现的委托方法,当用户选择一行时将调用该方法。如果你点击它,它会给出一些描述等等。

    如果你去描述,那么完整的方法是:

    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
    

    所以当用户选择一行时,这个方法会被调用,pickerView 会自动传递给该方法。

    然后您可以获取用户选择的行。如果您返回到 UIPickerView 类引用的页面,您会看到:

    在视图选择器中选择行

    – selectRow:inComponent:animated:
    – selectedRowInComponent:
    

    selectedRowInComponent: 方法是您想要的方法。所以在委托方法中你可以这样做:

    int selectedRow = (int)[pickerView selectedRowInComponent:0];
    

    :) 当我想找到此类问题的答案时,我就是这样做的。 :)


    编辑:

    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
        int selectedRow = (int)[pickerView selectedRowInComponent:0];
        NSLog(@"%i",selectedRow);
    }
    

    【讨论】:

    • 我同意你的回答,但你能告诉我一行代码,它会在任何行显示警报消息吗?
    • 我已经编辑了我的答案,并在其末尾添加了您需要的内容。这将 NSLog 用户选择的行。如果要显示警报,可以使用 UIAlertView 类。 developer.apple.com/library/ios/#documentation/UIKit/Reference/…
    • are变成了高亮和蓝色,但是NSLog里什么也没有,也用了UIAlertView,但是这里都不起作用,现在怎么办,请再检查一下
    • 您是否将您的班级设置为 uipickerview 委托并将 uipickerview 的委托属性设置为 self
    • 还有一个大问题,现在很好,运行良好,thanx,我接受了你的回答:-)
    【解决方案2】:

    假设您已经实现了 UIPickerViewDelegate 协议,这是 Thomas Clayson 的答案的 Swift 5 版本:

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        let selectedRow = pickerView.selectedRow(inComponent: 0)
        print(selectedRow)
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-13
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 2011-03-24
      相关资源
      最近更新 更多