2014-06-22 4 views
0

두 개의보기 컨트롤러가 있습니다. 하나는 텍스트 필드와 '다음'단추가 있고 다른 하나는 레이블이있는 컨트롤러입니다. 아이디어는 텍스트 필드에 이름을 입력하고 '다음'을 클릭하는 것입니다. 그런 다음 다른보기로 전환해야하며 레이블에 사용자의 이름이 표시되어야합니다.다른보기 컨트롤러에서 UILabel의 텍스트를 변경할 수 없습니다.

그러나보기를 전환하면 레이블이 비어 있습니다. 나는 오히려 Objective-C에 익숙하지 않고 누군가가 왜 이런 일이 일어 났는지 알고 있기를 바라고 있습니다. :)

ViewController.m는 :

@interface ViewController() { 
IBOutlet UILabel *label; 
IBOutlet UITextField *textField; 
} 

-(IBAction)go:(id)sender 
{ 
    label.text = textField.text; 
} 

-(IBAction)remove:(id)sender { 
[sender resignFirstResponder]; 
} 
+0

위의 코드에서 설명과 연결되지 않은보기 컨트롤러가 하나만 표시됩니다. 그러나 일반적인 실수는 IBOutlet이 설정되기 전에 무언가를하려고 시도하는 것입니다. IBOutlet은'-viewDidLoad'가 호출 될 때까지는 nil이됩니다. –

+0

답변 해 주셔서 감사합니다. 나는 하나의 스토리 보드가 있고 그 스토리 보드 안에 2 개의 뷰 컨트롤러가 있다고 말하고자한다. 하나의 ViewController.h와 하나의 ViewController.m 만 있습니다. –

답변

0

당신은 당신이보기 컨트롤러를 가지고 있다고 말했다. 첫 번째 View Controller에는 UITextField의 인스턴스와 UIButton이 있습니다. 두 번째보기 컨트롤러에는 UILabel의 인스턴스 만 있습니다.

그러나 코드에서 ViewController.m은 첫 번째 View Controller라고 가정했는데 두 개의 IBOutlet, 하나는 UILabel 용이고 다른 하나는 UITextField 용이며 UILabel은 다음과 같으므로 의미가 없습니다. 두 번째 View Controller에 속해 있어야합니다.

첫 번째보기 컨트롤러에서 UILabel 용 IBOutlet을 올바르게 삭제해야합니다. 그런 다음 두 번째보기 컨트롤러에서 UILabel의 IBOutlet을 추가합니다.

그런 다음 첫 번째보기 컨트롤러에 prepareForSegue 방법을 구현하고이 같은 코드 문을 추가해야 다음 SEGUE이 수행 될 때

[[segue destinationViewController]label].text = textField.text; 

이 방법, 당신은 성공적으로 패스합니다 첫 번째보기 컨트롤러의 텍스트 필드의 텍스트를 두 번째 View Controller 레이블로 가져옵니다.

+0

고마워요! prepareForSegue 메소드를 찾아 보겠습니다. 이것은 내가 필요한 것입니다. –

+0

문제 없습니다. 제 답변을 선택하십시오! – user3344977

+0

완료! 시각적 인 설명이 필요한 사람들을 위해이 우수한 자습서 (https://www.youtube.com/watch?v=a5yA6ywgGbc)를 확인하십시오. –

관련 문제