2014-02-12 2 views
1

나는 ViewControllerView을 별도의 파일에 가지고 있습니다. 는 ViewController에서 나는 다음과 같은보기를 추가하는 mainView에서보기 액세스 ViewController에서 서브 뷰

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 

     mainView = [[MainView alloc] init]; 
     [self setView: mainView]; 

    } 
    return self; 
} 

는 라벨, SubView로 추가있다. 내 컨트롤러에서 레이블 텍스트를 변경하고 싶습니다. 내가 어떻게 그럴 수 있니?

컨트롤러에서 레이블에 액세스하는 방법을 알 수 없습니다.

+0

에서

yourLabel.tag = 'urlb' 

MAINVIEW가있는 UIView의 자신의 서브 클래스를 작성하는 경우 MainView.m에서

라벨에 태그를? – Linuxios

+0

레이블이 속성을 사용하여 공개적으로 선언 되었습니까? –

+0

MainView는 UI의 내 하위 클래스입니다. 방금이 Views .h 파일에서 레이블을 선언했지만 속성은 선언하지 않았습니다. – DontMind

답변

1

레이블은 예를 들어 MainView에서 노출되어야합니다. 재산.

[[(MainView *)[self view] labelProperty] setText: @"foo"]; 

또는 더 읽기 :

은 그럼 당신은 같은 그 속성에 액세스 할 수 있습니다 쉽게 액세스 할 수 만 하위 뷰 등의 라벨과 다른 파단이

MainView *mainView = (MainView *)self.view; 
mainView.labelProperty.text = @"foo"; 
+0

고마워, 그게 내가 찾고 있던 것. – DontMind

0

mainView 경우 레이블이

UILabel *label = (UILabel *)[mainView.subviews objectAtIndex:0]; 

다음과 같이 텍스트를 설정하십시오.

label.text = @"your text"; 

"빠르고 더러운"방법입니다.


훨씬 더 나은 솔루션 수정할 각 서브 뷰에 대한 귀하의 ViewControllerproperty를 만드는 것입니다. CTRL +는 ViewController.h 파일에 레이블을 끌어 엑스 코드가 자동으로 그럼 당신은 쉽게

label.text = @"your text"; 
+1

레이블은 항상 mainView의 첫 번째 하위 뷰 여야합니다. 뷰 계층을 변경하면이 코드가 손상됩니다. –

+0

맞습니다. 여러분과 @msk이 제안한 것과 거의 같은 두 번째 해결책은 훨씬 더 잘 사용되어야합니다. 첫 번째 해결책은 빠르고 더러운 방법입니다. – Mischa

+1

답장과 수정 해 주셔서 감사합니다. 내가 받아 들일 수있는 답을 여러 개 표시 할 수 있다면 알렉산더를 표시 했으므로 알렉산더를 표시했습니다. – DontMind

0

또 다른 방법으로 ViewController 어디에서나 라벨에 액세스 할 수 있습니다 라인

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

을 추가해야합니다. 당신이 그것을 당신의 ViewController

UILabel *lbl = (UILabel *)[mainView viewWithTag:'urlb']; 
[lbl setText: @"what is the problem"]; 
+0

감사합니다.이것은 아마 어떤 태그가 좋고 깨끗하게 보이지만, 지금 당장 나는 Alexanders의 대답을 보았습니다. 왜냐하면 지금 직면하고있는 작업에 적합하기 때문입니다. – DontMind

관련 문제