Iphone Pickerview Ellipsis在开始而不是结束

时间:2010-11-09 23:18:46

标签: iphone uipickerview

正如标题所述,是否可以将省略号(...)放在UIPickerView“行”的开头而不是结尾?

我试过返回NSString和UIView:

pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

我甚至尝试使用滚动条包装视图以尝试找到我想要的替代解决方案,但似乎在开始时的省略号仍然是最适合我的。

文本的结尾是一个唯一的标识符,其中可以在各种对象之间重复开始,这就是文本结尾更重要的原因。

这不是我在做什么,但想到例如一个名单和人的社会安全号码,名称可能重复,ssn不会。

我知道我可以将号码放在开头,但是这个应用程序以这种方式运行各种平台,并且客户真的希望数字保持在最后以保持一致性。

这甚至可能吗?如果是这样,我怎么能这样做?

Thanx,Stefano。

添加了答案代码:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
          forComponent:(NSInteger)component reusingView:(UIView *)view {
    UILabel *retval = (id)view;
    if (!retval) {
        retval= [[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)] autorelease];
    }

    retval.text = [self.arrayWithData objectAtIndex:row];
    retval.lineBreakMode = UILineBreakModeHeadTruncation;
    retval.backgroundColor = [UIColor clearColor];

    return retval;
}

1 个答案:

答案 0 :(得分:3)

您可以通过在UIPickerViewDelegate上实现-pickerView:viewForRow:forComponent:reusingView:方法而不是-pickerView:titleForRow:forComponent:方法来实现。后者只是将一个字符串返回给UIPickerView,此时由选择器视图决定如何显示它。此时,您无法控制显示省略号的位置。

相反,实现-pickerView:viewForRow:forComponent:reusingView :,返回UILabel,并将其lineBreakMode设置为UILineBreakModeHeadTruncation。这将确保将椭圆放在字符串的开头。