UIPickerView пользовательский вид не визуализировать - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть пользовательское представление:

#import <UIKit/UIKit.h>
@interface materialView : UIView {
    IBOutlet UIImageView * _img;
    IBOutlet UILabel * _title;
}
- (id)initWithTitle:(NSString*)pTitle image:(UIImage *)pImage;
@end

и

#import "materialView.h"
@implementation materialView
- (id)initWithTitle:(NSString*)pTitle image:(UIImage *)pImage {
    CGRect frame = CGRectMake(0, 0, 295, 38);
    self = [super initWithFrame:frame];
    if (self) {
        [_img setImage:pImage];
        [_title setText:pTitle];
    }
return self;
}
@end

, затем я добавляю это представление в свой UIPickerView:

- (id)init {
    self=[super init];
    if (self) {
        materialView * pl = [[materialView alloc] initWithTitle:@"Plastic" image:[UIImage imageNamed:@"aaa.jpeg"]];
        materialView * gl = [[materialView alloc] initWithTitle:@"Glass" image:[UIImage     imageNamed:@"bbb.jpeg"]];
        _loadedItems = [[NSArray arrayWithObjects:pl, gl, nil] retain];
    } 
return self;
}
...

pickerView.dataSource = self;
pickerView.delegate = self;
...

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    return [_loadedItems objectAtIndex:row];
}

Проблема в том, что яесть довольно странное поведение.Мой вид не отображается в окне выбора.Может ли какое-нибудь тело помочь мне?

1 Ответ

1 голос
/ 16 декабря 2011

Во-первых, в вашем:

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

проверяется, что _loadedItews и объекты, возвращенные с objectAtIndex:, не являются nil?В противном случае ваш код выглядит разумно без контекста.

Также установите для свойства userInteractionEnabled вашего пользовательского представления значение NO.Похоже, что если для него установлено значение YES, пользовательские виды пересекаются с касаниями, и средство выбора не может прокручиваться к повернутой строке.

...