2013-11-25 1 views
0

내가 이렇게 참조를 탐색 컨트롤러의 루트에의하여있는 UIViewController를 얻으려면 : 그 루트 뷰의는, UITextField의 텍스트를 설정하는 방법네비게이션 컨트롤러의 루트에있는 UITextField 텍스트를 설정하는 방법은 무엇입니까?

UIViewController *root = (UIViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 

내가 그 참조가되면? 나는 다음과 같은 시도했지만 작동하지 않습니다 :

NSString *str = @""; 
[[root txtID] setText:str]; 

엑스 코드는 오류를 보여줍니다 : " '의 UIViewController'에 대한 눈에 띄는 @ 인터페이스가 선택 'txtID'을 선언하지 않습니다." 당신은 단지 하나의 텍스트 필드에있는 경우

+0

"작동하지 않음"(누구나 질문에 사용할 수있는 가장 쓸모없는 단어)입니다. 그것은 추락합니까? 오류가 있습니까? 텍스트가 단순히 업데이트되지 않습니까? – rmaddy

+0

Xcode에서 오류가 발생했습니다 "UIViewController '에 대한 @interface가 표시되지 않아'txtID '선택기가 선언됩니다." – lepton

+0

수정하고 덧글뿐만 아니라 귀하의 질문에이 오류를 추가하십시오 – Ilario

답변

1

문제는이 라인이다 :

UIViewController *root = (UIViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 

당신은 루트 컨트롤러의 실제 클래스를 참조 할. 같은 뭔가 :

MyRootViewController *root = (MyRootViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 

이 루트 컨트롤러 클래스의 실제 이름으로 MyRootViewController 교체 - txtID 속성을 가지고 하나.

0

당신은 대신에 '의 UIViewController'의 사용자 정의 클래스를 사용해야합니다 ... 그리고 다음 .H 파일 링크 거기 @property는 .. 그게 어떻게해야 ...

0

루트 뷰 컨트롤러는 당신은 당신의 루트 뷰에서 파단의 모든 foreach는 체크 아웃이의 UITextField의 유형입니다 수 있습니다

UIViewController *root = (UIViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 
    for (UIView *v in [root.view subviews]) 
    { 
     if ([v isKindOfClass:[UITextField class]]) 
     { 
      UITextField *textField = (UITextField*)v; 
      [textField setText:@"My text to set up"]; 
     } 
    } 

그러나 당신이 당신의 루트 뷰 컨트롤러에 대한 자세한 TextField의이 있다면 당신은 태그로 그것을 확인하고도 비교해야 텍스트를 업데이트하기 전에.

관련 문제