2012-10-05 4 views
0

나는 몇 시간 동안이 작업을 검색하고 시도했다. 나는 아주 간단한 실수를하고 있다는 것을 알고있다. 나는 그것이 무엇인지 모른다.하나의 TableviewController에서 다른 TableviewController로 NSString을 전달

두 개의 서로 다른 UITextField에 입력 된 텍스트를 가져 와서 다른 TableViewController의 테이블에 넣으려고합니다.

내 NSLog가 내 addGuestViewController가 텍스트 입력을 받고 있지만 내 guestlistViewController로 전송하지 않는 것을 반환합니다.

guestlistViewController.h

@interface guestlistViewController : UITableViewController { 
    NSString *firstnameInput; 
    NSString *lastnameInput; 
} 
@property (nonatomic, retain) NSString *firstnameInput; 
@property (nonatomic, retain) NSString *lastnameInput; 

@end 

guestlistViewController.m

@synthesize firstnameInput; 
@synthesize lastnameInput; 
NSString *fullname = [NSString stringWithFormat:@"%@ %@", firstnameInput, lastnameInput]; 

NSArray *array = [[NSArray alloc] initWithObjects: fullname, nil]; 
NSLog(@"Their name is: "%@", fullname); 

addGuestListViewController.h

@interface addGuestViewController : UITableViewController 

@property NSString *firstnameInput; 
@property NSString *lastnameInput; 

@end 

addGuestListViewController.m

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    firstnameInput = firstname.text; 
    lastnameInput = lastname.text; 

    if (textField == firstname) { 
     [textField resignFirstResponder]; 
     [lastname becomeFirstResponder]; 
    } else if (textField == lastname) { 
     [textField resignFirstResponder]; 
     [self performSegueWithIdentifier:@"done" sender:self]; 
     NSLog(@"Their name is: %@, %@", firstnameInput, lastnameInput); 
    } 
    return YES; 
} 

누군가 내가 잘못하고있는 것에 대해 알려 주면 Objective-C 프로그래밍을 처음 접했을 때 커다란 도움이 될 것입니다.

편집 :

나는 내 SEGUE이 탐색 컨트롤러를 가리키는 가지고 있기 때문에,이 문제의 원인이 될 수 있다고 생각하지만, 확인되지 않았다.

답변

0

guestlistViewController의 firstnameInput 및 lastnameInput을 설정하지 않습니다. textFieldShouldReturn : 메서드에서 guestlistViewController의 값이 아닌 addGuestListViewController 속성에 텍스트 필드의 값을 할당합니다. prepareForSegue : sender : 메소드를 구현해야하고 그 메소드에서 segue.destinationViewController로 guestlistViewController에 대한 참조를 얻는다. 이 참조를 사용하여 해당 뷰 컨트롤러의 속성 값을 설정할 수 있습니다. 다음과 같은 것 :

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    [(guestlistViewController *)[[(UINavigationController *)segue.destinationViewController viewControllers] lastObject] setFirstnameInput:firstnameInput]; 
    [(guestlistViewController *)[[(UINavigationController *)segue.destinationViewController viewControllers] lastObject] setLastnameInput:lastnameInput]; 
} 
+0

아니요, 맞습니다. 그 방법에서, segue.destinationViewController는 gestlistViewController가 될 것입니다 - 당신은 어떤 alloc init도하지 말아야합니다. – rdelmar

+0

내 편집 된 답변보기 – rdelmar

+0

수정 된 답변은 "선언되지 않은 식별자 'guestlistViewController'사용"오류를 반환합니다. 이것은 생각이지만, guestListViewController 이전에 내비게이션 컨트롤러를 지적했기 때문에 내 segue가 문제를 일으킬 수 있습니까? 나는 메뉴 막대와 아래쪽 탭 막대가 남아 있기 때문에 그렇게하고있다. 그러나 그럼에도 불구하고 ... – jakenberg

관련 문제