2013-12-19 3 views
0

У меня есть это:Picker в NSString к UITextField

AddSightingViewController.h

#import <UIKit/UIKit.h> 

@class MovieSighting; 

@interface AddSightingViewController : UIViewController <UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource> 

@property (weak, nonatomic) IBOutlet UITextField *movieTitleInput; 
@property (weak, nonatomic) IBOutlet UITextField *directorInput; 
@property (weak, nonatomic) IBOutlet UITextField *estrenoInput; 
@property (strong, nonatomic) MovieSighting *movieSighting; 

@end 

и это:

AddSightingViewController.m

#import "AddSightingViewController.h" 

#import "MovieSighting.h" 

@interface AddSightingViewController() 

@property (strong, nonatomic) NSArray *array; 
@property (strong, nonatomic) UITextField *genero; 

@end 

@implementation AddSightingViewController 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    if ((textField == self.movieTitleInput) || (textField == self.estrenoInput) || (textField == self.directorInput)) { 
     [textField resignFirstResponder]; 
    } 
    return YES; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSArray *generos = [[NSArray alloc] initWithObjects:@"Drama",@"Fantástico",@"Aventuras",@"Policíaco",@"Romántica",@"Comedia",@"Documental",@"Terror", nil]; 

    self.array = generos; 
} 

#pragma mark Picker Data Source Methods 


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

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ 
    return [_array count]; 
} 

#pragma mark Picker Delegate Methods 

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

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 
    NSString *generoInput = [self.array objectAtIndex:row]; 

} 

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


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"ReturnInput"]) { 
     if ([self.movieTitleInput.text length] || [self.directorInput.text length]|| [self.estrenoInput.text length]) 
     { 
      MovieSighting *sighting; 

      NSUInteger *valor = (NSUInteger *)[[self.estrenoInput text] integerValue]; 

      sighting = [[MovieSighting alloc] initWithName:self.movieTitleInput.text anyo:valor genero: director:self.directorInput.text]; 
      self.movieSighting = sighting; 
     } 
    } 
} 

@end 

Как может Я использую:

NSString *generoInput = [self.array objectAtIndex:row]; 

Для преобразования в собственность UITextField, который я создал:

@property (strong, nonatomic) UITextField *genero; 

И затем использовать это с помощью метода визирования в конце? Тогда я могу использовать его для сравнения по методу textFieldShouldReturn.


I've делал это:

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 
    NSString *generoInput = [self.array objectAtIndex:row]; 
    UITextField *nuevo = (UITextField*)[generoInput capitalizedString]; 
    _genero = nuevo; 

} 

И prepareForSegue метод:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"ReturnInput"]) { 
     if ([self.movieTitleInput.text length] || [self.directorInput.text length]|| [self.estrenoInput.text length] 
      || [self.genero.text length]) 
     { 
      MovieSighting *sighting; 

      NSUInteger *valor = (NSUInteger *)[[self.estrenoInput text] integerValue]; 

      sighting = [[MovieSighting alloc] initWithName:self.movieTitleInput.text anyo:valor genero:self.genero.text director:self.directorInput.text]; 
      self.movieSighting = sighting; 
     } 
    } 
} 

Но don't работа приложение ... Любая идея? Когда я добавляю другой фильм и Clic на Add:

enter image description here Появившийся что:

enter image description here Код ошибки:

2013-12-19 21:43:19.875 MovieWatching[920:70b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<AddSightingViewController 0x8a63190> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key staticDataSource.' 

ответ

1

Вы хотите:

self.genero.text = [generoInput capitalizedString]; 
+1

Что не работает ? Быть конкретной. – rmaddy

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