У меня есть немного уникальной настройки UISplitViewController
(я думаю). Мой главный контроллер представления является контроллером представления таблицы в контроллере навигации, что является нормальным. Тем не менее, мой контроллер детального просмотра - UITabBarController
. Каждая вкладка имеет контроллер навигации, чтобы обернуть содержимое внутри.
Когда пользователь выбирает строку таблицы в главном контроллере вида, я выбираю вкладку в контроллере подробного вида и начинаю толкать контроллер вида:
let detailViewController = masterViewController?.splitViewController
.viewControllers[1] as? UITabBarController
let selectIndex = 2
let viewController = (detailViewController.viewControllers?[selectIndex] as? UINavigationController)?.viewControllers.first
detailViewController.selectIndex = selectIndex
viewController.show(myCustomViewController)
Это прекрасно работает на iPad. Выбор элемента в таблице контроллера основного вида выбирает вкладку в контроллере подробного представления и выдвигает на него контроллеры представления.
На iPhone у меня при начальной загрузке отображается главный контроллер, используя этот пост :
class MasterViewController: UIViewController {
private var collapseDetailViewController = true
override func viewDidLoad() {
super.viewDidLoad()
splitViewController?.delegate = self
}
// ...
}
extension MasterViewController: UISplitViewControllerDelegate {
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
return collapseDetailViewController
}
}
extension MasterViewController {
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
collapseDetailViewController = false
selectTabAndPush(index: 2, vc: myCustomViewController)
// Tried swapping the order of these but still no luck
}
}
Однако выбор строки в таблице контроллера основного вида буквально ничего не делает. Как я могу заставить контроллер подробного представления показывать, когда выбрана строка в главной таблице?