2013-08-13 2 views
0

Я реализовал простую метку и UIPickerView в Xcode 5 для iOS 7. Я использовал код со следующего веб-сайта. Все кажется правильным. Не уверен, почему он не работает.UIPickerView ничего не показывает

http://www.youtube.com/watch?v=CIhqiuG8p1k

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 
    IBOutlet UILabel *label; 
    IBOutlet UIPickerView *Picker; 
    NSArray *PickerData; 
} 

@property (retain, nonatomic) IBOutlet UIPickerView *Picker; 
@property (retain, nonatomic) NSArray *PickerData; 
@end 


#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 
@synthesize Picker,PickerData; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSArray *array = [[NSArray alloc] initWithObjects:@"One",@"Two",@"Three",@"Four", nil]; 
    self.PickerData = array; 
} 

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

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

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component { 
    return [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 { 
    int select = row; 
    if (select == 0) { 
     label.text = @"One Is Selected"; 
    } else if (select == 1) { 
     label.text = @"Two Is Selected"; 
    } else if (select == 2) { 
     label.text = @"Three Is Selected"; 
    } else if (select == 3) { 
     label.text = @"Four Is Selected"; 
    } 
} 

@end 

ответ

2

Есть три вероятные причины здесь, все связанные с:

  1. ли на самом деле существует мнение сборщика? Вы добавили его в xib-файл, который определяет интерфейс для этого класса?
  2. Является ли вид выбора в вашем xib подключен к розетке для вашего выбора зрения ivar? Это всегда хорошая идея при отладке таких проблем, чтобы проверить, действительно ли self.PickerView указывает на объект - если это nil, вы, вероятно, не подключили его, и ваш код просто молча отбросит сообщения, отправляемые на пустой ivar.
  3. Являются ли свойства источника данных и делегата представления сборщика подключены к вашему контроллеру вида? Вот как видит выборщик, кто просит его содержимое.

Кроме того, как и в стиле Objective-C: переменные, свойства и ивары, по соглашению, имеют имена, начинающиеся с строчных букв, а классы и структуры начинаются с прописных букв. Вам не обязательно следовать этому соглашению, но это сделает ваш код более легким для чтения для других, и это поможет вам прочитать код других людей, в свою очередь.

+0

Понял! Это был 3-й пункт, который мне не хватало. Большое спасибо. – ivesingh

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