2010-05-14 5 views
1

UIButton이 포함 된 뷰가 있습니다. 이 버튼을 클릭하면 다른 NIB를로드하는 메소드가 호출됩니다. 이제 보통, 그 펜촉은 스택에 뷰를로드 할 것이고 모든 것이 잘 될 것입니다. 그러나 탐색 컨트롤러를로드하려고하는데 (여러 수준의 테이블 뷰를 가질 수 있도록) 오류가 발생합니다.iPhone : 네비게이션 컨트롤러 (TableViewController 포함)를 스택에 푸시하십시오. 이것이 가능한가?

내비게이션 컨트롤러를로드하고 스택 맨 위에 올리는 적절한 방법은 무엇입니까?

+0

UITableView와 같은 멋진 답변도있었습니다. (왜 NavigationController를 이미 내비게이션 컨트롤러라고 가정하고 있습니다.) 아마도 어쩌면 내가 뭔가를 놓쳤습니다. – Rudiger

+0

하, 아마도 그게 내가 뭔가를 놓치고있다! 내가 주석을 가지고 UIMapView 있습니다. 거기에 동일한 데이터가 있지만 테이블보기에서 내장 된 해당 tableview 있습니다. 내가 그것을 드릴 다운 수 있도록 탐색 컨트롤러가 필요합니다. "Show list view"버튼을 클릭하면 내비게이션 컨트롤러가 제어하는 ​​테이블 뷰를 가져오고 싶습니다. 내가 잘못 했나요? –

+0

mapview가 광산과 비슷하다고 가정하면 mapview에 내비게이션 컨트롤러가 있습니까? 어딘가에? 혼란스러워하는 경우에 나는 presentModalViewController를 통해 mapView를 밀고 그것을 루트 v로 전달했다. 컨트롤러보기. 원한다면 탐색 막대를 숨길 수 있지만 표시하려면 – Rudiger

답변

5

다른 포스터는 AppDelegate에서 Nav 컨트롤러를 만들어야한다고 말했습니다. 새로운 UIView를 presentModalViewController와 같은 스택에 추가하는 경우 UIView를 만들고 Nav Controller를 추가해야합니다. 만약 당신이 그 화면에서 nav 컨트롤러를 원하지 않는다면, 다음은 navController.hidden 속성을 사용하는 것입니다.

은보기로 탐색 컨트롤러가 이렇게 추가하려면 다음 질문으로 도움이

NoticesView *noticesScreen = [[[NoticesView alloc] init] autorelease]; 
noticesScreen.delegate = self; 
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:notices_screen] autorelease]; 
[self presentModalViewController:navController animated:YES]; 

희망을. 그래도 정확히 무엇을하고 있는지 알아 내려고 노력했습니다

+0

명확히하려면 다음을 시도하십시오. 할 것. 1. 이미 작동하는 탭 막대 컨트롤러가 있습니다. 2. 탭 2를 클릭하고 내 mapview로 이동합니다. 3.지도에 목록보기로 변경하는 버튼이 있습니다. 4.이 "목록"이 일반보기처럼 아래로 슬라이드되기를 원하며, 드릴 다운 할 수있는 테이블 뷰 여야합니다 (탐색 컨트롤러가 필요하다고 가정). 이것을 위해 nav 컨트롤러가 필요하지 않습니까? –

+1

예. 당신은 pushViewController 전체 방법 또는 당신은 모든 presentModalViewController 뭐하는거야? 당신이 방금 nav 컨트롤러를 밀고 있다면, 무료로 전달되지만, presentModal과 같은 일을한다면, 당신은 루트 Nav 컨트롤러를 넘겨야 만합니다. 그냥 약간의 잃어버린 생각의 원인, 내 경험에 당신은 UIViewController 또는 UITableViewController를 밀 수 있습니다. UINavigationController 클래스를 푸시하면 (.h 클래스) nav 컨트롤러가 이미 존재하기 때문에 항상 추락했습니다. – Rudiger

+0

음, pushViewController와 presentModalViewController의 차이점은 무엇입니까? 나는 그것이 어떻게 행해지는지 신경 쓰지 않고, tableview를 가질 수 있기를 원하며, 각 항목을 드릴 다운 할 수 있습니다. 그리고 그 테이블 뷰는 "list"버튼이 클릭되었을 때 다른 뷰에 의해 호출 된 스택 맨 위에 표시됩니다. 너무 단순 해 보이지만 아무도 이것을하는 법을 알지 못합니다! –

0

앱 대리인에 내비게이션 컨트롤러를 만듭니다. 첫 번째보기로 스택에지도보기를 푸시합니다. 테이블 뷰를 두 번째 스택으로 밀어 넣습니다. 뷰 기반 앱 템플릿으로 시작한 경우 네비게이션 컨트롤러가 전혀 인스턴스화되지 않습니다. (이 작업을 완료 한) 가장 쉬운 방법은 xCode를 사용하여 네비게이션 기반 applcation을 만든 다음 코드를 복사하는 것입니다. 네비게이션 컨트롤러가 이미 있다면 위와 같이 뷰 컨트롤러를 누르십시오.

+0

이미 nav 컨트롤러가 있지만 탭 막대 컨트롤러이며 작동하며 내 응용 프로그램 대리인을 통해 연결됩니다. 이게 내가 필요로하는 방식으로는 사용할 수 없다고 생각하니? –

+0

탭 막대 컨트롤러를 만드는 방법에 따라 각 탭에는 고유 한 탐색 컨트롤러가 있습니다 (각 탭은 자체 스택의 위치를 ​​기억할 수 있습니다. 그렇게하면 그냥 작동해야합니다). 자세한 내용은 http://stackoverflow.com/questions/2802612/how-to-create-iphone-main-menu-screen-with-2-tabbars-subview/2806137#2806137을 참조하십시오. – Andiih

관련 문제