2017-11-15 4 views
0

두 컨트롤러 사이에서 세부 정보 검색을 위해 ID 필드를 View Controller로 전달하는 Table View Controller가 Tab Bar Controller입니다. 나는이 두 사람 사이에 전달 된 정보를 어떻게 얻는 지 확신 할 수 없다. Segue를 사용하려했으나 세부 컨트롤러에 도달하면 값이 비어 있습니다.TabBarController를 통한 정보 전달 Swift

EventBarTableViewCell.swift

override func prepare(for segue: UIStoryboardSegue, sender: Any?)   { 
    if segue.identifier == "showEventDetail" { 
     if let IndexPath = self.tableView.indexPathForSelectedRow { 
      let controller = segue.destination as? eventDetailViewController 

      controller?.inTradeShowID = (events?[IndexPath.row].tradeshowID!)! 
      controller?.viaSegue = (events?[IndexPath.row].tradeshowID!)! 
      //controller?.performSegue(withIdentifier: "tradeShowID", sender: self) 
      //if shouldShowSearchResults { 
      // controller?.viaSegue = filteredArray[IndexPath.row].charterNum! 
      //} else { 
      // controller?.viaSegue = repositories[IndexPath.row].charterNum! 
      //} 
     } 
    } 
} 

eventDetailViewController.swift

var viaSegue = "" 
var inTradeShowID = "" 

override func viewDidLoad() { 
    super.viewDidLoad() 

    inTradeShowID = self.viaSegue 
} 

는 도움을 사용할 수 있습니다. 당신이 "드릴 다운"할 수 있도록

Screen Shoot of Controllers

답변

2

당신은 아닌 "디스플레이"보기 위해, 탭 바 컨트롤러에 segueing된다 말하자면 :

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if segue.identifier == "showEventDetail" { 

     if let IndexPath = self.tableView.indexPathForSelectedRow { 

      // we're segueing to a Tab Bar Controller 
      if let tabBarVC = segue.destination as? UITabBarController { 

       // get the first view controller of the Tab Bar Controller 
       // *that* is where you want to "pass" your data 
       if let controller = tabBarVC.viewControllers?.first as? eventDetailViewController { 

        // either should work 
        controller.inTradeShowID = (events?[IndexPath.row].tradeshowID!)! 
        controller.viaSegue = (events?[IndexPath.row].tradeshowID!)! 

       } //end if let controller = tabBarVC.viewControllers?.first as? eventDetailViewController 

      } //end if let tabBarVC = segue.destination as? UITabBarController 

     } //end if let IndexPath = self.tableView.indexPathForSelectedRow 

    } //end if segue.identifier == "showEventDetail" 
}