(iOS) 如何使 UIPickerView 中的第一个值无法选择?

Posted

技术标签:

【中文标题】(iOS) 如何使 UIPickerView 中的第一个值无法选择?【英文标题】:(iOS) How to make first value in UIPickerView unselectable? 【发布时间】:2014-03-26 11:07:25 【问题描述】:

我正在使用(例如)4 行的 UIPickerView。第一个值是带有灰色文本的“选择一个值”。其他是用户应该用黑色文本选择的值。

选择是可选的,因此用户可以跳过它。但如果他们不这样做,如何在用户开始选择后使第一个值无法选择?

谢谢。 问候。

【问题讨论】:

【参考方案1】:

如果选择了第一行,则使用 UIPickerView 委托方法- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 更改所选行:

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

    if (row == 0) 
        [pickerView selectRow:row+1 inComponent:component animated:YES];
    


编辑:您可以使用此更改文本颜色:

- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component 

    if (row == 0)
        return [[NSAttributedString alloc] initWithString:@"Pick a value" attributes:@NSForegroundColorAttributeName:[UIColor lightGrayColor]];
    else 
        // Return titles
    

如果您的目标是 ios 6+,它会替换之前使用的 -pickerView:titleForRow:forComponent: 方法。

【讨论】:

它有效。还有一个问题 - 如何在该方法中使其变灰?如何自定义一行文字和颜色?

以上是关于(iOS) 如何使 UIPickerView 中的第一个值无法选择?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS Swift 3 中滚动到 UIPickerView 中的特定行

PhoneGap:iOS 7 中的 UIPickerView 不会像在 iOS 6 中那样自动调整字体大小。关于如何在 iOS 7 中实现的任何解决方案?

如何在 iOS 应用程序中通过 UIPickerView 实现视图之间的转换?

如何使 UIPickerView.viewForRow 在中心突出显示,重置行灰色?

iOS 7 UIPickerView 非选中行曲率修改多个组件

在 iOS 8 中使用 UIPickerview 作为 UITextfield 的输入视图时崩溃