0
나는 애플 대리자에서 탐색 컨트롤러에 액세스하고 다른보기를 밀어하기 위해 노력하고있어

을 밀어 없습니다. 위의 내용은 myTableView에 있습니다.있는 navigationController보기

앱은 탭 기반입니다. IB의 TabbarController 개체 아래에 NavigationController 개체를 추가했습니다. 그런 다음 app delegate에 myNavigationController에 대한 참조를 만들었습니다.

위의 코드가 작동하지 않는 이유는 무엇입니까? addSubview가 현재보기에 있으면 작동합니다.

답변

1

, appDelegate.myNavigationController가 null는 아니고, (당신이 그것을 얻고있는 곳에서 오른쪽 값을 반환) appDelegate이 null이 있는지 확인합니다 (함께 IBOutlet은 설치가 제대로했다), 그 appDelegate.myNavigationController.window (이것은 현재 표시되는 null가 아닌 스택의 상단. 또한

은 밀거나 뷰의 터지는 이전의 애니메이션이 당신의 새로운 항목을 밀어 넣기 전에 완료되었는지 확인합니다.

+0

감사합니다. IBOutlet이 연결되지 않았습니다. – 4thSpace

+0

detailView에서 viewWillAppear에서이 작업을 수행합니다. appDelegate.myNavigationController.navigationItem.rightBarButtonItem = self.myButton하지만 버튼이 표시되지 않습니다. 인스턴스가 유효하다는 것을 알았습니다. 내가 뭘 잘못하고 있는거야? – 4thSpace

+0

아마도 다른 질문을해야합니다. 그러나 내 머리 꼭대기에서 navigationItem은 내비게이션 컨트롤러에 표시되는 뷰 컨트롤러에만 적용되며 내비게이션 컨트롤러에는 적용되지 않습니다. appDelegate.myNavigationController.topViewController.navigationItem.rightBarButtonItem이 필요합니다. 또는 간단히 말해서 self.navigationItem.rightBarButtonItem을 원할 수도 있습니다. –

0

이 질문에 대한 해답이 될 수 없습니다.

코드가 혼란스러워 보입니다.하위 클래스 또는 UITableViewController 하위 클래스? 내가 묻는 것은 pushViewController:에 대한 귀하의 주장이 self.detailView이라는 것입니다. 구별을 명료하게 유지하는 것이 매우 중요합니다.

탐색 막대가 표시된보기 컨트롤러에서 코드를 호출하는 경우 appDelegate에 속성을 추가하는 대신 self.navigationController을 사용해야합니다.

특히, 탭의 탐색 컨트롤러를 사용해야합니다.

이 중 하나라도 나타나면 뷰에 문제가 발생할 수 있습니다.

+0

myTableView는 UIViewController입니다. DetailView가 내비게이션 컨트롤러에 액세스하는 경우 myTableview에 어떻게 액세스합니까? detailView myTableView (부모)에 대한 참조가 필요합니까? 순환 참조가되기 때문에 차라리 피할 것입니다. – 4thSpace

+0

detailView가 푸시 한 UIViewController 인 경우 (코드 스 니펫이 작동하기 위해 있어야 함) 푸시 할 때 설정되는 navigationController 속성이 있습니다. –