2011-07-06 6 views
0

하나의 ViewController에서 다른 ViewController로 데이터를 전달할 때 막혔습니다. 시나리오는 다음과 같습니다. SearchController 이름이 SearchDomainController 및 LoginViewController입니다. 내가 뭘 하려는지 LoginViewController에서 UITExtfield SearchDomainController 문자열 값을 전달하는 것입니다.ViewController간에 UITextField로 데이터 전달

LoginViewController에서 나는 IBOutlet UITextField *domainField;을 선언했으며 속성은 @property(nonatomic,retain) UITextField *domainField입니다.

문제는 SearchDomainController에서 LoginViewController의 새 인스턴스를 만들고 시도 할 때입니다. _loginViewController.domainField.text = @"Some text"; LoginViewController에서 UItextField에서 텍스트가 변경되지 않습니다. 나는 무엇을 놓쳤는가? 그리고 이런 종류의 문제에 가장 적합한 해결책은 무엇입니까? 고맙습니다

답변

1

내 생각에 _loginViewController.domainField은보기가 아직로드되지 않았으며보기가로드 될 때 (펜촉을 통해) 표시되고 즉시보기가 아니기 때문에 생성됩니다 컨트롤러 개체가 생성됩니다.

값을 전달할 때보기가 완전히로드되지 않도록하기 위해 제목을 전달하는 별도의 속성 즉 _loginViewController.domainFieldText = @"Some text";을 사용했을 것입니다. 그런 다음 _loginViewControllerviewDidLoad에서 domaonFieldText 값을 실제 레이블에 할당하십시오.

또는 다른보기 컨트롤러에서 텍스트를 설정할 때 UILabel 인스턴스가 만들어지고 nil이 아닌지 확인하십시오.

+0

textField.text로 설정할 수 있습니다. SearchViewController에 델리게이트를 만들고 그 값을 다시 LoginViewController에 전달합니다. 이런 식으로 해결해도 괜찮습니까? – Haris

+0

여기에 대리인을 사용하지 않는 것이 좋습니다. 대의원은 주로 자신이 통제하지 않는 수업의 내부 행동에 대한 통보를 받고 있습니다. 단순히 정보를 전달하는 것이 아니라 여기에서하는 것처럼 보입니다. –

+0

도움을 주셔서 감사합니다. 이제 문제가 해결되었습니다. – Haris

0

설정 한 뷰 컨트롤러에있는 AppDelegate에의 property 같은 문자열, 당신은 서로를 검색하고, 나는이 문제를 해결하기 위해 위임 패턴을 사용하여 고려하고