Как изменить цвет выбранной строки в UIPickerView

Чтобы найти файлы по UNC-путям, нужно использовать магический префикс \\?\UNC\, а не просто \\?\.

Ссылка: https://msdn.microsoft.com/en-us/library/aa365247 (VS.85) .aspx # maxpath

Так что для доступа //server/share/really/deep/path/etc/etc, вам нужно

  1. конвертировать его в юникод (используйте конструктор unicode())
  2. добавить магический префикс ("\\?\\UNC\") и
  3. убедиться все разделители каталогов: "\" (см. os.path.normpath())

Результирующая строка Unicode: \\?\UNC\server\share\really\deep\path\etc\etc

Я только немного экспериментировал (намного меньше, чем @stenci) но с Python 2.7 он, кажется, работает нормально с os.walk() и не работает с os.listdir().

Предупреждение: работает с os.walk () только в том случае, если начальный путь обхода находится в пределах предела MAX_PATH, и ни один из подкаталогов в начальном пути также не превысит его. Это потому, что os.walk () использует os.listdir () в верхнем каталоге.

19
задан Can Berk Güder 22 May 2009 в 00:42
поделиться

4 ответа

Решено! Объявите две переменные экземпляра: selectedView и oldView. Затем следующий код сделает свое дело:

if (self.oldView != nil)
        self.oldView.backgroundColor = [UIColor clearColor];

self.selectedView = [picker viewForRow:row forComponent:kNumberComponent];
        self.selectedView.backgroundColor = [UIColor redColor];
        [self.selectedView setNeedsDisplay];
        self.oldView = self.selectedView;
4
ответ дан 30 November 2019 в 04:04
поделиться

Вызовите метод -viewForRow: forComponent: экземпляра UIPickerView , чтобы получить объект UIView * . Затем установите фон этого представления UIColor .

2
ответ дан 30 November 2019 в 04:04
поделиться

Непонятно, куда вы помещаете приведенный выше код. Это в -pickerView: viewForRow: forComponent: reusingView: ? Вот где это должно быть. Вы уверены, что поддерживаете указатель на метку для этого конкретного представления? Тот факт, что вы рушитесь, говорит о том, что, вероятно, это не так. Было бы полезно использовать более крупный блок кода, включая место, где вы его поместили.

0
ответ дан 30 November 2019 в 04:04
поделиться

Правильный формат для viewForPicker:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    UILabel *label = (UILabel*) view;
    if (label == nil)
    {
        label = [[UILabel alloc] init];
    }

    [label setText:@"Whatever"];

    // This part just colorizes everything, since you asked about that.

    [label setTextColor:[UIColor whiteColor]];
    [label setBackgroundColor:[UIColor blackColor]];
    CGSize rowSize = [pickerView rowSizeForComponent:component];
    CGRect labelRect = CGRectMake (0, 0, rowSize.width, rowSize.height);
    [label setFrame:labelRect];

    return label;
}

Проблема с приведенным выше кодом: он окрашивает метки, но не само средство выбора. Итак, когда вы катитесь к одному или другому концу, есть пустое место, где вы можете видеть белый фон. Установка [myPicker setBackgroundColor ...] не дает того, на что можно надеяться.

6
ответ дан 30 November 2019 в 04:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: