1

저는 objective C의 iPod 응용 프로그램에서 xcode로 작업하고 있고, 클래스 (navigationController)가 내 클래스 중 하나 (rootViewController)에 있습니다. 다른 클래스에서 인스턴스화 된 rootViewController의 navigationController를 어떻게 참조합니까? 예를 들어, FirstContController.m 클래스에서 navigationController를 참조하려면 어떻게해야합니까?객관적인 C의 다른 클래스에서 인스턴스화 된 객체를 참조합니다.

응용 프로그램 대리인을 참조하기위한 참조 만 찾을 수있는 것 같습니다.

내가 FirstViewController와 응용 프로그램 대리자를 참조 할 경우

, 방금 말 :

MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 

[delegate.navigationController pushViewController:childController animated:YES]; 

가 어떻게 대신 MyAppDelegate의 rootViewController 클래스에 대해이 작업을 수행합니까?

답변

0

당신이 묻는 질문에 따라 스택에서 상위에있는 UINavigationController의 메서드를 호출하려는 것 같습니다. 모든 UIViewControllers에는 navigationController의 속성이 이미 있습니다.이 속성은 스택에있는이 ViewController의 조상 인 UINavigationController입니다. 당신이 어떤 점에서했다는 것을 루트라는 RootViewController을했다 경우

그래서 그런 다음이

FirstViewController * first = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil]; 
[self.navigationController pushViewController:first animated:YES]; 
[first release]; 

first.navigationController == root.navigationController

그래서 일단 [self navigationController] 를 호출하는 줄 것이다 내부 당신은 처음에 처음으로 눌려진 navigationController와 동일한 것입니다.

+0

옙, 이것은 정확히 내가 묻고있는 것입니다. 와우 나는 2 시간 동안 이것에 붙어 있었고 내가해야만했던 모든 것은 [self.navigationController pushViewController ...]라고 부름이었다. 감사! – Paul

0

하나의 객체는 다른 객체에 대한 참조가 필요합니다. 이것을 가능하게하는 많은 방법이 있습니다. 예를 들어 :

  • 는 같은 객체 모두를 생성하고, 그들 모두를 알고 있기 때문에, 같은 펜촉에서 그들을 만들기 서로
  • 에 대해 그들에게 정상적인 연결로를 연결 되세요
  • 소유자 되세요 중 하나가 다른 개체에 대해 알고있는 경우

기본적으로 이것은 개체가 서로에 대해 알 수 있도록 응용 프로그램을 올바르게 디자인하기위한 것입니다. 당신이하는 마법 같은 일은 없습니다.