Iphone Pickerview Ellipsis в начале вместо конца - PullRequest
1 голос
/ 10 ноября 2010

Точно так же, как указано в заголовке, возможно ли вообще поместить многоточие (...) в начале строки "UIPickerView" вместо конца?

Я попытался вернуть обе строки NSString иUIView для:

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

Я даже пытался обернуть представление скроллером, чтобы попытаться найти альтернативные решения для того, что я хотел, но кажется, что многоточие в начале все еще то, что подходит мне лучше всего.

Конец текста является уникальным идентификатором, где начало может повторяться среди различных объектов, поэтому конец текста более важен.

Это не то, что я делаю, нонапример, список с именем и номером социального страхования для человека, имя может быть повторено, ssn не будет.

Я знаю, что я мог бы просто указать номер в начале, но это приложениезапуск различных платформ таким образом, и клиент действительно хочет, чтобы числа оставались в конце, чтобы сохранить последовательность.

Возможно ли это вообще?Если да, то как я могу это сделать?

Спасибо, Стефано.

Код ответа добавлен:

- (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 Ответ

3 голосов
/ 10 ноября 2010

Вы можете сделать это, реализовав –pickerView: viewForRow: forComponent: reusingView: метод в вашем UIPickerViewDelegate вместо –pickerView: titleForRow: forComponent: метод. Последний просто возвращает строку в UIPickerView, после чего это зависит от представления выбора, чтобы определить, как его отобразить. В этот момент вы не можете контролировать, где показывать эллипсы.

Вместо этого реализуйте –pickerView: viewForRow: forComponent: reusingView:, возвращая UILabel с его lineBreakMode, установленным в UILineBreakModeHeadTruncation. Это обеспечит размещение эллипсов в начале строки.

...