2016-12-14 3 views
1

나는 viewController "A", "B", "C", "D", "E"가있는 TabBarcontroller를 사용합니다. 하지만 런타임에 API 응답에 따라 순서를 결정해야합니다. 예 : 나는 "A", "D", "C", "E", "B"를 무작위 순서로 보여줄 필요가 있거나 때때로 "D", "B", "C" "A"TabBarcontroller에서 런타임에 tabbar 항목을 정렬하는 방법은 무엇입니까?

이 시나리오를 해결할 방법이 있습니까?

스위프트 3과 함께 작업하고 있지만 로직이나 가능한 경우에도 문제를 해결하는 데 도움이 될 수 있습니다.

스토리 보드를 사용하여 TabBar 및 viewcontroller를 만들었습니다. 이 응답 조금 어렵도록

enter image description here

+0

탭 표시 줄 컨트롤러와 해당보기 컨트롤러는 어떻게 만듭니 까? – rmaddy

+0

질문은 좋지만, 사람들이 근육 기억을 가지고 있고 당신의 특징이 그것으로 엉망이되기 때문에, 이것은해서는 안됩니다. –

+0

@rmaddy 제 질문을 업데이트했습니다 – sss

답변

1
if let tabBarController = (self.window?.rootViewController as? UITabBarController) { 
    if var vcArray = tabBarController.viewControllers { 
     //Arrange the array according to your need and set them again. 
     tabBarController.viewControllers = vcArray 
     //Arrange the array according to your need and set them again. 
     var items = tabBarController.tabBar.items 
     tabBarController.tabBar.items = items 
    } 
} 

당신은 selectedViewController을 처리해야합니다. appdelegate에서 위의 코드를 작성했지만 appDelegate의 객체를 가져 와서 위 코드에서 self으로 사용할 수 있습니다.

tabCtrl을 프로그래밍 방식으로 만들고 조작 할 수있는 또 다른 솔루션은 this을 참조하십시오.

0

는 당신은 코드를 포함하지 않았습니다.

내가 할 수있는 것은, 새로운 주문이 생기 자마자 새 TabBarController를 작성하여 새로운 TabBarController를 새로 작성하게하는 것입니다.

사용자를보다 논리적으로 만들려면 사용자를 동일한 VC "A" "B" "C".. (새 주문)로 이동하거나 사용자가 (대체 된) 화면에 남아있게하십시오 (첫 번째/두 번째 등)

+0

은 스토리 보드에 tabbarcontroller를 만들면 가능합니까? – sss

0

UITabBarController의 viewControllers 속성을 새로 정렬 된 viewContoller 배열로 설정합니다.

아래 예제는 viewControllers를 역순으로 정렬하는 것입니다 (AppDelegate에서 호출 됨).

if let wTB = (self.window?.rootViewController as? UITabBarController) { 
    if let wVCs = wTB.viewControllers { 
     wTB.viewControllers = [ wVCs[ 4 ], wVCs[ 3 ], wVCs[ 2 ], wVCs[ 1 ], wVCs[ 0 ] ] 
    } 
}