나는 Xcode 8.2, 스위프트 3, iOS 10을 사용하고 있습니다. 제목이 이해하기 어려울 수 있음을 알고 있으므로 내가하려는 것을 설명해 드리겠습니다.UITableViewCell에 대한 세부 정보는 단추를 클릭 한 후 세부 정보로 점프하는 동안 어떻게 만듭니 까?
저는 TabViewController
에 3 명의 자식 ViewControllers
을 가지고 있습니다. 각각 NavigationController
및 기타 내용이 있습니다. 그러한 탭 중 하나가 아래에 나와 있습니다 (탭 1). 이것은 TableViewController
입니다. 내 맞춤을 보여줍니다. TableView
세포 정보가 있습니다. 다른 탭 (예를 들어, 탭 2)에
, 내가 버튼 클릭에 표 1에 셀을 추가하고있다. 나는이 일을 잘하고있다. 이제 내가 원하는 동작은 사용자가 탭 2에서 동일한 버튼을 클릭 할 때 이전과 마찬가지로 셀을 추가하고 해당 셀의 상세보기를 추가하고 해당 상세 뷰로 이동한다는 것입니다 (탭 1로 전환하고 해당 셀을 클릭해야 함). 이 세부 정보보기에서 나는 Back 단추가 있으면 모든 세부 정보보기에 액세스하는 탭 1로 되돌아갑니다.
나는이 행동을 성취 할 수있는 올바른 방법을 찾아 내려고 노력했기 때문에 어떤 도움을 주시면 대단히 감사하겠습니다. 고맙습니다!
편집 나는 아래 겨울의 응답의 기반으로 약간의 편집을했다. 그러나 새로 만든 UIViewController
을 Table View 셀에 "연결"할 수 없습니다.
가 :
표 1에서// this code is located in a function where I call to create a new custom cell in Tab 1.
//Switch to first tab
tabBarController?.selectedIndex = 0
//Show the detail view
if let navigationController = tabBarController?.viewControllers?[0] as? UINavigationController {
let detailViewController = UIViewController()
detailViewController.view.backgroundColor = UIColor.red
navigationController.pushViewController(detailViewController, animated: true)
let tempNavVC = self.tabBarController?.viewControllers?[0] as! UINavigationController
let resultsTab = tempNavVC.viewControllers[0] as! Tab1VC
resultsTab.detailVCArray.append(detailViewController)
}
: 나는 그것을 실행하면
// this is an array that holds the newly created view controllers passed in from Tab 2
// when the user clicks on a cell, look up which cell it clicked on and display the view controller for that cell
var detailVCArray = [UIViewController]()
// called when a cell is clicked
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let newChildVC = detailVCArray[indexPath.row]
self.addChildViewController(newChildVC)
self.present(newChildVC, animated: true, completion: nil)
}
, 탭 2의 코드가 성공적으로 실행하고 나는
나는 다음과 같은했다 빨간색 배경의 새 View Controller가 제공됩니다. 나는 테이블 뷰 셀을 클릭하면 그러나, 오류 아웃 :'NSInvalidArgumentException', 이유는 : '응용 프로그램은 같은 붉은보기에 segueing의
대신 모달 활성 컨트롤러를 을 제시하려 제어 장치.
나는 이것이 아마도 어리석은 방법이라고 생각하지만, 다른 것을 생각할 수는 없다.
하루가 끝나면 내 탭 2에서 세부 정보가있는 일부보기 컨트롤러가 포함 된 표 1에서 표보기 셀을 만들고 그 세부 정보로 "전환"합니다.
당신이 detailView에 보여주고 싶은 것을 다음의 모든 세부 사항을 겪고있는 휴대 정보 TAB2를 작성하는 경우. 권리? –
'UITabViewController'가 아니라'UISplitViewController'를 원한다고 들립니다. – NRitH
셀을 추가하는 코드는 어디에 있습니까? – Callam