2013-03-02 2 views
0

나는이 질문에 대해 100 번이나 질문했지만 정확히 무엇을 잘못하고 있는지 알 수는 없습니다.보기간에 데이터 전달이 작동하지 않습니다.

이것은 내 두 번째 IOS 응용 프로그램입니다. 내 ViewControllerA의 Button을 눌러 내 ViewControllerB의 Label을 수정하고 싶습니다.

  1. 나는 나의 ViewControllerB 내 버튼 (ViewControllerA)에서 스토리 보드에 SEGUE을 만들어 "TestSegue"라고 불렀다. (UIStoryboardSegue *) SEGUE 보낸 사람 : (ID) 보낸 사람 {

    - (무효) prepareForSegue

:

  • 내가 내 ViewControllerA.m이 코드를 쓴 내 ViewControllerA.h
  • #import "ViewControllerB.h을 쓴 내 ViewControllerB 아무것도에서
    if([segue.identifier isEqualToString:@"TestSegue"]){ 
    
    ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController; 
    controller.TestLabel.text = @"TEST!";}} 
    

    는 에게

    는 사람이 뭐를 볼 수 ... TestLabel으로 발생 내가 틀렸어? 사전에

    감사

    편집 : 지금 작품 rpledge에게 감사드립니다.

    새로운 코드 :

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    
    if([segue.identifier isEqualToString:@"TestSegue"]){ 
    
    ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController; 
    controller.TestString = @"TEST!";}} 
    
  • 답변

    1

    prepareForSegue 이후에 발생할 것 textLabel라는 UI 요소가있는 viewDidLoad 때까지 생성되지 않기 때문에 가능성이 실행 It'l :

    을 내가하지 어쨌든 뷰에 대한 UI 요소를 공개적으로 노출하는 것과 마찬가지로 NSString *에 대한 @ 속성을 대상 뷰 컨트롤러에 추가 한 다음 viewDidLoad에 UILabel.text를 설정하는 것이 좋습니다.

    +0

    아 ... 당신 말이 맞아요. 그건 바보 같았 어. 고마워요! – Michael

    0

    컨트롤에 할당하지 말고 인스턴스 변수에 할당합니다.

    @property (nonatomic) NSString *var; 
    

    그런 다음 viewDidLoad에서이 값을 컨트롤에 할당합니다.

    관련 문제