2014-01-27 5 views
2

в конце этого примера. Я добавляю subviews в UIView, но отображается sub arent. UIView показывает (сделал это для теста синего цвета, и он был там). Если я возвращаю rowLabel или rowImage отдельно, они показываются. но не встроен в UIView. Есть идеи?UIPickerView не показывает добавленное subview в UIView

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { 

    NSDictionary *oneResultDict = [_postArray objectAtIndex:row]; 

    NSData *tmpImageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[oneResultDict objectForKey:@"thumbnail"]]]; 

    UIImage *tmpImage = [UIImage imageWithData:tmpImageData]; 

    UIImageView *rowImage = [[UIImageView alloc] initWithImage:tmpImage]; 
    rowImage.frame = CGRectMake(0, 0, 60, 60); 

    UILabel *rowLabel = [[UILabel alloc]initWithFrame:CGRectMake(80, 0, 200, 60)]; 
    rowLabel.text = [oneResultDict objectForKey:@"title"]; 

    UIView *rowView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 160)]; 

    [rowView insertSubview:rowImage atIndex:0]; 
    [rowView insertSubview:rowLabel atIndex:1]; 

    return rowView; 
} 
+0

решена. «* RowView» был установлен на Y-height 160. Это было как-то большим. когда я опустил его до 80, все было в нужном месте. Теперь мне нужно выяснить, почему это происходит. Каково это правило? – iOSNoob

+0

'UIView', отображающий возвращенный вид из вашего метода, может * закрепить * ваше представление, попробуйте установить флаг' clipsToBounds' на 'NO'. - Это не даст вам полного решения, которое я предполагаю, но это может помочь вам отладить проблему. –

+0

Это была действительно высота y. ЕСЛИ я помещаю все y-высоты ... rowLabel, rowImage и rowView в тот же размер 60. Все работает нормально. clipsToBound тоже не работает. не имеет никакого эффекта. – iOSNoob

ответ

-1

От insertSubview:atIndex: компании Apple Docs:

Индекс в массиве собственности подвиды, на котором для вставки вид. Индексы subview начинаются с 0 и не могут быть больше, чем количество подзонов.

Другими словами: у вас пока нет подзонов, поэтому yo не может insert новый подзаголовок. Попробуйте использовать addSubview: вместо:

[rowView addSubview:rowImage]; 
[rowView addSubview:rowLabel]; 
+0

Нет, это не проблема. см. мой комментарий. это был размер * rowView Y-height – iOSNoob

0

вы просто должны вернуть ваш взгляд, вам не нужно делать [rowView insertSubview: rowImage atIndex: 0]. Это лучше сделать, как

(если компонент == 0) [rowView addsubview: rowImage]

(если компонент == 1) [rowView addsubview: ROWLABEL]

возвращение rowView

Смежные вопросы