2014-09-21 4 views
0

Я начинаю разработку iOS, и у меня, похоже, есть ошибка!UIPickerView возвращается "?" в столбцах

Изображение: http://prntscr.com/4p1hfr

При использовании этого кода:

Recent.h:

@interface RecentImages : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> 

@property (strong, nonatomic) NSArray *imageURLs; 

@end 

Recent.m

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
_imageURLs = @[@"test", @"test", 
        @"test", @"test", @"test"]; 
} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 
#pragma mark - 
#pragma mark PickerView DataSource 

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

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

- (NSString *)pickerView:(UIPickerView *)pickerView 
     titleForRow:(NSInteger)row 
     forComponent:(NSInteger)component 
{ 
    return _imageURLs[row]; 
} 
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row 
    inComponent:(NSInteger)component 
{ 
    NSLog(@"got it"); 

} 

Следует отображать "тест" несколько раз право? Не "?". Я очень смущен.

+0

Вы уверены, что вызываются методы делегата? – danh

+0

Что именно вы имеете в виду? – user3818701

+0

Поместите точку останова в numberOfRowsInComponent или titleForRow. Посмотрите, вызваны ли они. – danh

ответ

0

На какой версии Xcode вы столкнулись с этой проблемой? Поскольку ваш код работает нормально на ios 8 и Xcode 6. По-прежнему вы можете попробовать этот код после заполнения массива->

self.pickerView.delegate = self;

self.pickerView.dataSource = self;

[self.pickerView reloadAllComponents];