2014-12-08 3 views
-1

ОБНОВЛЕНИЕ! ошибка была делегатом и DataSource мнение, захватывающего :)Используйте UIPickerView в навигационном контроллере

Хорошо, вот проблема: Я хочу осуществить UIPickerView в целях класса «infoGeneral», что я уже создал.

Иерархия приложения до сих пор такова: когда вы нажимаете кнопку «Crear proyecto nuevo», вы переходите к другому виду, где расположен UiPickerView.

App hierarchy (Dropbox, я не могу добавлять изображения)

Я видел учебник о том, как использовать вид UiPicker, но с точки зрения по умолчанию. Так я последовал за учебник, но вместо того, чтобы использовать некоторые inits в viewDidLoad, я сделал это на awakeFromNib, (потому что viewDidLoad является метод ViewController, а не Просмотр один)

Я выставиться в DataSource и делегат PickerView, чтобы Вид, где он находится.

Но я получаю эту ошибку:

2014-12-07 19:11:57.174 calcMuroLosas[6272:182705] -[UIViewController numberOfComponentsInPickerView:]: unrecognized selector sent to instance 0x7fb620c88300 

И я знаю, что ошибка происходит потому, что я использую навигацию контроллер.

Так может кто-нибудь сказать мне, что я могу сделать, чтобы использовать pickerview в этой иерархии?

Вот мои файлы:

infoGeneral.h

#import <UIKit/UIKit.h> 

@interface infoGeneral : UIView <UIPickerViewDelegate, UIPickerViewDataSource> 

@property (retain, nonatomic) IBOutlet UIPickerView *picker; 
- (IBAction)buttonPressed:(id)sender; 

@end 

infoGeneral.m

#import "infoGeneral.h" 
@interface infoGeneral() 
@property (strong, nonatomic) NSArray *arrayTipoCodigoEsfuerzosAdmisibles; 
@end 
@implementation infoGeneral 

/* 
// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
- (void)drawRect:(CGRect)rect { 
    // Drawing code 
} 
*/ 

- (void)awakeFromNib 
{ 

    NSArray *dataTipoCodigoEsfuerzosAdmisibles = [[NSArray alloc] initWithObjects:@"MSJC", @"Guatemala", @"El Salvador", @"Honduras", @"Nicaragua", @"Costa Rica", @"Panamá (MSJC)", @"México", @"Chile", @"Colombia", @"Canada", @"Perú", @"Dominicada (similar a MSJC)", @"Ecuador", @"Otro", nil]; 
    self.arrayTipoCodigoEsfuerzosAdmisibles = dataTipoCodigoEsfuerzosAdmisibles; 
} 

- (IBAction)buttonPressed:(id)sender { 
    NSString *select = [_arrayTipoCodigoEsfuerzosAdmisibles objectAtIndex:[_picker selectedRowInComponent:0]]; 
    NSString *title = [[NSString alloc]initWithFormat:@"You selected %@!", select]; 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:@"YAY!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    [alert show]; 

} 

#pragma mark Picker Data Sources Methods 
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return [_arrayTipoCodigoEsfuerzosAdmisibles count]; 
} 
#pragma mark Picker Delegate Methods 
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return [_arrayTipoCodigoEsfuerzosAdmisibles objectAtIndex:row]; 
} 
@end 
+0

Вы подключили представление выбора, чтобы иметь владельца файлов, чтобы быть делегатом? – kpsharp

+0

Да, я уже сделал это –

+0

Я нахожу ошибку! <3 <3 <3 Делегат был «Informacion General» (название навигационной панели). Я не знаю, почему, соя, я проверил инспектор точек выхода сборщика и заметил это. Поэтому я меняю его на «Info General» (имя os .h и .m файлов, и это сработало! Большое вам спасибо :) –

ответ

0

простой, вероятно, добавить следующие строки в infoGeneral viewDidLoad: Метод

[_picker setDelegate:self]; 

лучше всего установить делегата в раскадровку с помощью панели инспектора атрибутов выбора.

+0

Я уже нашел ошибку, спасибо :) –

+0

, так что у нее была проблема с вашим делегатом , хорошо хорошо – believesInSanta

+0

Да это было :) Еще раз спасибо –