3

appDelegate에서 내 ViewController 중 하나의 레이블을 업데이트하고 싶습니다. 뷰 컨트롤러의 레이블은 모두 IB로 링크되어 있으며 속성이 설정되어 있습니다. 나는이 같은 대리자에서 뷰 컨트롤러의 레이블에 액세스 할 수 있도록appDelegate에서 다른보기 컨트롤러의 레이블을 업데이트하십시오.

.H AppDelegate에에서

나는 뷰 컨트롤러에 대한 바르를 만드는 오전.
someViewController *myView; 

과 AppDelegate.m 파일

myView.theLabel.text = @"Whatever"; 

에서

는 또한 또한 MYVIEW에게 재산을 만들고 그것을 합성하거나 시도 필자

myView.theLabel setText: @"whatever";을 시도했습니다. applicationDidFinishLaunchingapplicationWillEnterForeground의 코드를 시도했지만 레이블이 업데이트되지 않습니다. 이 일을하는 가장 좋은 방법은 무엇입니까?

+0

앱 대리인에서 컨트롤러를 인스턴스화합니까, 아니면 다른 방법으로이 컨트롤러의 인스턴스에 대한 참조를 가져 옵니까? – Alladinian

+0

@Alladinian .h에 언급 된 것처럼 ivar someViewController * myView를 만들고이 방법으로 레이블에 액세스합니다. someViewController.h 헤더가 의미하는 것이 확실하지 않은 appDelegate.h 및 appDelegate.m에 추가됩니다. 답장을 보내 주셔서 감사합니다. –

+0

@Alladinian 두꺼운 아뇨 죄송합니다. 저는 someViewController * myView = [[someViewController alloc] initWithNibName : @ "someViewController"blah blah에 액세스하고있는 레이블 위에 appcontrol에서 뷰 컨트롤러를 인스턴스화하지 않았습니까? –

답변

3

myView가 아직 생성되지 않았으므로 null 참조가 있다고 생각합니다. 을 만들려면이로이 경우,

someViewController *myView; 
if(myView) 
    NSLog(@"Object has been created"); 
else 
    NSLog(@"You have a null reference - The Object hasn't been created yet"); 

줄을 변경 :

이 그 이론을 테스트하려고

someViewController *myView = [[someViewController alloc] initWithNibName:@"SomeViewController" bundle:nil]; 
myView.theLabel.text = @"Something"; 
self.window.rootViewController = myView; 

예, 당신은 AppDelegate에에서 첫 번째 뷰를 생성, 그런 다음 첫 번째보기로 rootViewController를 설정하십시오.