ОБНОВЛЕНИЕ! ошибка была делегатом и 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
Вы подключили представление выбора, чтобы иметь владельца файлов, чтобы быть делегатом? – kpsharp
Да, я уже сделал это –
Я нахожу ошибку! <3 <3 <3 Делегат был «Informacion General» (название навигационной панели). Я не знаю, почему, соя, я проверил инспектор точек выхода сборщика и заметил это. Поэтому я меняю его на «Info General» (имя os .h и .m файлов, и это сработало! Большое вам спасибо :) –