0

에서 tabbarcontroller/탐색 계층 구조 내에서 내가 몇 일 동안 수많은 게시물을 흐르고 내 보이는 직선 앞으로 작업에 대한 하나 정확히 정답을 찾을 수 없습니다 :표시 DetailView 원격 통지

내 애플은 주요 tabbarcontroller있다 (TBC)을 제 1 탭은 단순한 뷰 컨트롤러를 갖고, 나머지는 네비게이션 컨트롤러 지향 계층 구조를 갖는다.

작업은 간단합니다. 인바운드 원격 알림을 수락하고 네 번째 탭의 내비게이션 컨트롤러 (여기에서 id = 3으로 태그 지정)의 루트보기보다 한 단계 높은 세부 양식 (dv)을 실행하십시오.

tbc는 앱의 rootviewVC입니다. 모티브가 잘 작동하고 있습니다. 모티브의 분석은 모두 작동합니다. 내가 무슨 짓을했는지에 상관없이, 나는 주된 tbc를 (tab3에) 표시하거나 dv에 정확한 세부 사항을 보여 주지만 시각적으로는 tbc를 표시하지 않는 것처럼 보일 것이다.

필자는 필자가 기본적으로 수동으로 아래에 표시된 줄 AAA를 통해 tbc를 재설정함으로써 작동하도록 만들었지 만,이 작업을 수행하기 위해 tbc의 모든 탭을 본질적으로 다시 만들어야한다는 것은 거의 이해가되지 않습니다. 그 답은 어디에 있는지 알면 쉽게 알 수 있습니다 :

너무 .. 질문 : tabbarcontroller 내의 탭 내에있는 탐색 지향 계층 구조 내에서 세부보기를 시작하는 더 좋은 방법은 무엇입니까? 앱의 rootview입니까?

작동 코드 예제 : 배열과 사투를 벌인 다른 사람들을위한

UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UITabBarController *tbc = [mainstoryboard instantiateViewControllerWithIdentifier:@"AppTabBarController"]; 

//setup tabs 
//TODO: we should not have to create these here as the storyboard already has them... 
UINavigationController *mainViewController = [mainstoryboard instantiateViewControllerWithIdentifier:@"Tab0NavController"]; 
UINavigationController *Tab1NavController = [mainstoryboard instantiateViewControllerWithIdentifier:@"Tab1NavController"]; 
UINavigationController *Tab2NavController = [mainstoryboard instantiateViewControllerWithIdentifier:@"Tab2NavController"]; 
UINavigationController *Tab3NavController = [mainstoryboard instantiateViewControllerWithIdentifier:@"Tab3NavController"]; 

[self.window setRootViewController:tbc]; 
[self.window makeKeyAndVisible]; 

//setup the destination detail view to show & set its' property we must manage (temp only, real code uses payload 
QTManageContactVC *vc3 = [Tab3NavController.storyboard instantiateViewControllerWithIdentifier:@“Tab3VC"]; 
PFObject *newWidget = [PFObject objectWithClassName:@“Widget"]; 
{set details code} 
vc2.widget = newConnection; 

//AAA 
[tbc setViewControllers:@[mainViewController, Tab1NavController, Tab2NavController, Tab3NavController]]; 
[tbc setSelectedIndex:3]; 
[Tab3NavController pushViewController:vc3 animated:NO]; 

completionHandler(UIBackgroundFetchResultNoData); 
return; 
+0

아마도 이것이 내가 아는 .. 모든 답변을 충분히 격리 너무 상세한 또는 아니었다 탭에 모두 다른 navcontrollers가있는보기가 표시 될 때 나는 기본적인 것을 놓치고 있어야합니다. 내가 원하는보기를 실제로 보여주기 위해 간단한 pushviewcontroller 호출을 얻으려는 이상한 시간이 있습니다. 위의 작업은 효과가 있지만 너무 많이 보입니다. 내 생각은 스토리 보드 ID를 통해 tabbarcontroller의 navcontroller를 설정 한 다음 해당 navcontroller에 뷰를 밀어 필요한 세부 뷰를 입력하기 만하면 필요한 탭의 navcontroller를 가져 오는 것입니다. 위의 내용은 간단하지만 보이지 않는 것 같습니다. –

답변

0

, 여기있다 :

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];       
[(UITabBarController *)self.window.rootViewController setSelectedIndex:YourIndexValue]; 

UINavigationController *nav = [[(UITabBarController *)self.window.rootViewController viewControllers]objectAtIndex:YourIndexValue]; 
YourViewController *targetVC = [mainStoryboard instantiateViewControllerWithIdentifier:@"ManageContactVC"];       

[nav pushViewController:targetVC animated:NO];