2017-09-06 3 views
4

TabBarItem을 클릭하거나 Table View Controller B에서 내비게이션 바에서 더하기를 눌러 볼 수있는 ViewController가 하나 있습니다.취소 버튼을 탭하여 두 ViewController 중 하나를 표시하는 방법은 무엇입니까?

내 문제는 내가 플러스 클릭하여 테이블보기 컨트롤러 B에서의 ViewController에 충돌하는 경우의 ViewController에서 취소 버튼을 클릭하여, 나는 테이블보기 컨트롤러 B로 이동하거나 테이블보기로 이동하는 방법,

컨트롤러 A 두 번째 (파란색) 탭 표시 줄 항목을 선택하여 ViewController를 친다면?

ViewController에서 Cancel 버튼으로 두 가지 조치를 설정하고 싶습니다. 이전 컨트롤러에 따라 TableViewControllerA 또는 TableViewControllerB로 가고 싶습니다. 가능합니까? 전환의

세부

첫 번째 버전 : 나는의 ViewController에 가서의 ViewController에 내가 취소 버튼을 클릭하고 TableViewControllerB로 돌아가 TableViewControllerB에 플러스 버튼을 클릭하면. 전환의

두 번째 버전 : TabBar의 컨트롤러에서 두 번째 TabBarItem을 클릭하면 난의 ViewController에 가서의 ViewController에 내가 취소 버튼을 클릭하고 TableViewControllerA로 돌아갑니다.

Schema of my project

+0

을 시도

추가/당신의 취소 버튼에 다음 코드를 교체하고 두 옵션을 잇달아 시도 귀하의 질문을 업데이트하여 귀하의 우려 사항을 자세히 자세히 설명하십시오. 그래서 내가 너를 잘 도울 수있어. 정확히 원하는게 뭐야? – Krunal

+0

이것은 혼란스러운 탐색입니다. 사용자가'Table-A'를보고 있는데'RedTab'이 현재 선택되어 있습니다 ... 사용자가'+'를 탭하면'ViewController'로 이동하여 자동으로'BlueTab'을 선택하겠습니까? 그런 다음 'Table-A'로 돌아가서 'RedTab'을 선택하는 취소 버튼을 가지고 있습니까? 그리고'Table-B'와 같은 (혼란스러운) 탐색은 ??? – DonMag

+0

업데이트 된 답변으로 시도하십시오 ... – Krunal

답변

1

는보기 컨트롤러 흐름도에 따라, 당신이 원하는 것을 달성하는 방법은 두 가지가 있습니다.

  1. 특정 뷰 컨트롤러 루트 뷰 컨트롤러에 팝
  2. 팝 당신은 귀하의 요구 사항에 따라, 당신이 사용해야하는 옵션을 결정해야

(TableViewController A).

@IBAction btnCancel_Action(button: UIButton) { 

    // 1. Pop to root view controller 
    self.navigationController?.popToRootViewController(animated: true) 

    // OR 
    // 2. Pop to Specific view controller (TableViewController A) 

    if let navController = self.navigationController { 

     for viewcontroller in navController.viewControllers { 
      // `TableViewControllerA` class name for view controller or you can use instance of `TableViewControllerA` also with `viewcontroller == <TableViewControllerA>` 

      if viewcontroller is <TableViewControllerA> { 
      //if viewcontroller == <IntanceOfTableViewControllerA> { 
       self.navigationController?.popToViewController(viewcontroller, animated: true) 
       break 
      } 

     } 
    } 
} 



편집 대답 질문 편집에 따라 : 입력하십시오이

@IBAction btnCancel_Action(button: UIButton) { 
if let tabController = self.tabBarController { 
      if tabController.selectedIndex == 0 { 
       self.navigationController?.popViewController(animated: true) 
      } else if tabController.selectedIndex == 1 { 
       self.tabBarController?.selectedIndex = 0 


       // If your tabbar 0 has TableViewControllerB is active on screen then use following code 
       if let navController = self.tabBarController?.navigationController { 
        navController.popToRootViewController(animated: false) 

        /* 
        //or 
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: { 
         navController.popToRootViewController(animated: false) 
        }) 
        */ 
       } 


      } 
     } 
} 
+0

예,보기 컨트롤러 다이어그램에 표시된 흐름에 따라 두 가지 모두가 가능합니다. 두 번째 옵션을 시도하고 요구 사항에 따라 조건을 설정하십시오. – Krunal

+0

취소 버튼을 설정하려는 두 가지 조건에 대해 자세히 설명해주세요. 더 도움이 될 수 있습니다. – Krunal

+0

나는 변종의 변종에 대해 더 자세히 설명했다. –