2011-12-16 62 views
0

我有自定义视图:UIPickerView自定义视图不visualizate

#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

首先,在你:

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

测试_loadedItews和对象与objectAtIndex:返回不nil?你的代码看起来合理,否则没有更多的上下文

还将您的自定义视图的userInteractionEnabled属性设置为NO。看起来,如果它被设置为YES,那么自定义视图拦截触摸,并且选择器不能滚动到被敲击的行。

+0

我相信,这应该与pickerView:viewForRow:forComponent做pickerViewDelegate:reusingView: 是不正确的? – Vov4yk 2011-12-16 14:23:33