2016-07-08 2 views
2

NavigationControllertitleView으로 드롭 다운 메뉴가있는 애플리케이션이 있습니다. 사용자가 드롭 다운 메뉴의 항목을 선택하면 전체보기에서 내용을 전환해야하지만 NavigationBar은 그대로 유지해야합니다. NavigationBar 은 데이터을 다시로드 할 필요가 없으며 제목보기 은 드롭 다운 메뉴이어야합니다.내비게이션 컨트롤러의 상태를 유지하고보기 만 변경하십시오.

응용 프로그램을 열 때 원래보기 :

Original View

드롭 다운 메뉴에 접촉시 뷰 :

Drop Down Menu

내가 현재 이것에 대해가는 몇 가지 방법을 참조 :

  1. 각 옵션에 대해 UIViewController을 설정하고 segue를 수행 한 다음 데이터를 다시로드하십시오. 이 나쁜 이유

    • : 내가 다운 메뉴 내 드롭 (15) 옵션이있는 경우 즉, 각 ViewController에 대한 SEGUE 식별자를 설정해야합니다, 나는 주위에 누워 (210) SEGUE 식별자를 갖게됩니다. 내 NavigationBar 데이터를 모두 다시로드해야합니다.
    • 왜 이렇게 좋을까요 : 개별적인보기를 설정하기위한 명확한 영역이 있습니다.
  2. 프로그래밍 내가 그들을 UIButtons, UILabelsUIWhatevers 필요에 따라 추가 및 제거 할 수 있습니다. 이 나쁜 이유

    • : 이것은 단지 하나의 ViewController 내부에 많은 코드를 작성하고 일이 디버그 어려운 얻을 수 있습니다.
    • 이유 :NavigationBar은 결코 다시로드되지 않습니다.
  3. 는 컨테이너를 추가하고 나는 그것을 필요로하는 각 항목에 대한 고유 한 ViewController을 포함. 이 나쁜 이유

    • : 내 모든 작업은 여전히 ​​주요 ViewController에있을 것 나는 하나의 컨트롤러 내부에 포함 된 ViewController의 논리를 관리해야 할 것이다.
    • 이유 :NavigationBar은 결코 다시로드되지 않습니다. 나는이 일을 가장 효율적인 방법을 모르기 때문에 다른 사람에 의해 제안
  4. 완전히 다른 방법.

그래서, 결론, 내 View 내 주요 내용을 전환 할 때 내 NavigationBar의 상태를 유지하는 가장 효율적인 방법은 무엇입니까?

+0

이 UINavigationController는 응용 프로그램의 루트보기입니까? (기본적으로 하단에 UITabBar 대신 상단에 드롭 다운 메뉴가있는 UITabBarController) – Kevin

+0

예 NavigationController가 루트보기입니다. –

+1

옵션 3. 왜 복잡한 지 알 수 없습니다. 루트보기 컨트롤러는 컨테이너보기에서보기 컨트롤러를 전환하는 역할 만합니다. 포함 된 각보기 컨트롤러는 여전히 자체 포함됩니다 – Paulw11

답변

1

옵션 3은 나와있는 세 가지 중에서 가장 좋습니다. 옵션 1과 2는 추가하려는 뷰 컨트롤러를 더 복잡하게합니다. 10 화면 대 100 화면을 처리하기 위해 더 복잡 할 필요가없는 UINavigationController, UITabBarController 또는 UIPageViewController과 비교하십시오.

나는 사용자 지정 컨테이너 뷰 컨트롤러를 만드는 제안

(Apple's Reference)

나는이 구현하는 2 개 즉시 접근을 참조하십시오

  1. 서브 클래스 UIViewController을 -이 애플의 컨테이너 뷰 컨트롤러 구현하는 방법입니다
  2. 하위 클래스 UITabBarController -이 작업을 성공적으로 마치고 UITabBarController을 하위 클래스 화하면 맨 아래에 대신 사용자 정의 탭 표시 줄이 표시됩니다.
관련 문제