2013-12-19 2 views
0

에 나는이 가지고선택기는 NSString에 UITextField에

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; 
     } 
    } 
} 

그러나하지는 작업 응용 프로그램 ... 어떤 생각? 내가 추가에 다른 영화와 카릭을 추가하면 는 :

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