2014-07-07 2 views
0

저는 iOS를 처음 접했고 아마 뭔가 기본적인 것을 파악하려고합니다. 두 개의 UIView, 각 페이지에 4 개의 단추 및 각 단추 아래에 4 개의 레이블이 있습니다. 기본적으로 뷰 컨트롤러 1에서 버튼 1을 누르면 뷰 컨트롤러 2의 모든 레이블이 단순히 "1"을 읽게됩니다.별도의보기 컨트롤러에서 텍스트 편집

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"number1"]){ 
     ViewController2 *controller2 = [[ViewController2 alloc]init]; 
     controller2.label1.text = @"1"; 
      NSLog(@"Fired"); 
      NSLog(@"%@", controller2.label1.text); 
    } 
} 

그것을 :이 메소드를 호출

enter image description here

지금, 나는 IB에서보기 컨트롤러 2 버튼 1에서 모달 전환을 연결하고, 한 : 여기에 더 나은 시각에 대한 이미지입니다 전환은 잘되지만 라벨을 변경하지는 않습니다. NSLogs는 메서드가 실행되지만 레이블이 null임을 보여줍니다. 아무도 내가 여기서 바꿀 필요가있는 것을 압니까?

나는과 같이 ViewController2 내 레이블을 선언 enter image description here

답변

1

당신은 당신의 뷰 컨트롤러의 완전히 새로운 인스턴스를 만들 :

여기
@interface ViewController2 : UIViewController { 
    UILabel *label1; 
} 

@property (strong, nonatomic) IBOutlet UILabel *label1; 

@end 

은 LABEL1의 연결 관리자입니다. 스토리 보드는 뷰 컨트롤러를 생성하고 prepareForSegue:sender: 메소드의 구성을 위해 사용자에게 전달합니다. 당신은 너무처럼 액세스 할 수 있습니다

또한
ViewController2 *controller2 = (ViewController2 *)segue.destinationViewController; 
// configure controller2 here 

prepareForSegue:가 호출 될 때, 뷰 컨트롤러에 콘센트가 설정되어 있지 않습니다. 두 번째보기 컨트롤러에서 속성으로 NSString이 있어야합니다. 나중에 viewDidLoad을 사용하여 레이블 텍스트를 이전에 정의한 NSString 속성이 보유하는 값으로 설정할 수 있습니다.

+0

감사합니다. 내가 게시 한 라인으로 바꿨지만 라벨을 변경하지 않았습니다. 나는 왜, 그것이 혼란 스러울 지 모르겠다. – John

+0

스토리 보드의 'ViewController2'에 라벨이 제대로 연결되어 있습니까? – duci9y

+0

예. 있습니다. 또한, 나는 OP를 편집하여 내가 선언 한 방식을 보여 주었다. 이것이 문제 일 수있다. – John

관련 문제