2013-08-17 2 views
0

배열에서 데이터를로드하고 올바르게 표시하는 xib로 사용자 지정 선택기보기를 만들었습니다. 이제 내 문제는이 피커 뷰가 스크롤되지 않는다는 것입니다. 사실이 선택기보기는 다른보기에로드됩니다. 클릭 뷰를 클릭하면 클릭이 기본 뷰에로드 된 것으로 표시됩니다. 다음은 코드입니다. 아무도이 문제를 어떻게 해결할 수 있는지 알려주십시오. 감사합니다사용자 지정 pickerview가 스크롤되지 않습니다.

#import <UIKit/UIKit.h> 
@class PickerView; 

@protocol PickerViewDelegate <NSObject> 

-(void) didSelectValueAtIndex; 

@end 

@interface PickerView : UIView <UIPickerViewDataSource, UIPickerViewDelegate> 
@property (strong, nonatomic) IBOutlet UIPickerView *pickerView; 
@property (nonatomic,weak) id<PickerViewDelegate> PickerViewDelegate; 

-(id) showPickerView : (UIButton *) senderButton dataArray: (NSArray *) dataArray viewframe: (CGRect) viewFrame; 
-(void) hidePickerView : (UIButton *) senderButton; 
@end 


#import "PickerView.h" 

@interface PickerView() 
@property (nonatomic,retain) NSArray * pickerData; 
@property (nonatomic,retain) UIButton *button; 
@end 

@implementation PickerView 
@synthesize pickerView; 
@synthesize PickerViewDelegate; 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

-(id) showPickerView : (UIButton *) senderButton dataArray: (NSArray *) dataArray viewframe:(CGRect)viewFrame{ 
    self.button = senderButton; 
    self.pickerView = (UIPickerView *)[super init]; 

     if (self) { 

      //inorder to load xib 
      NSArray *theView = [[NSBundle mainBundle] loadNibNamed:@"PickerView" owner:self options:nil]; 
      UIView *pickerviewLoadedFromXib = [theView objectAtIndex:0]; 

      CGRect btn = senderButton.frame; 
      self.pickerData = dataArray; 

      pickerviewLoadedFromXib.frame = CGRectMake(btn.origin.x , btn.origin.y+ viewFrame.size.height, pickerviewLoadedFromXib.frame.size.width, pickerviewLoadedFromXib.frame.size.height); 


      [UIView beginAnimations:nil context:nil]; 
      [UIView setAnimationDuration:1.0]; 
      pickerviewLoadedFromXib.frame = CGRectMake(btn.origin.x, btn.origin.y+btn.size.height, btn.size.width, 200); 
      [UIView commitAnimations]; 
      [senderButton.superview addSubview:self]; 
      [self addSubview:pickerviewLoadedFromXib]; 
      } 

    return self; 
} 

-(void) hidePickerView : (UIButton *) senderButton{ 

    NSLog(@"hide picker view"); 
} 

-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

-(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return self.pickerData.count; 
} 

-(NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return [self.pickerData objectAtIndex:row]; 
} 

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    NSLog(@"selectd value %@", [self.pickerData objectAtIndex:row]); 
} 

@end 

답변

0
pickerviewLoadedFromXib.delegate = self; 
pickerviewLoadedFromXib.dataSource = self; 

...

을 당신이 pickerviewloadedfromxib 변수를 가져올 후이 두 팝