Я использую splitViewController для отображения основного вида и подробного вида.
Когда я нажимаю на строку, подробный видобновляется корректно.
Затем, когда я нахожусь в книжной ориентации, я сворачиваю подробное представление разделенного просмотра, чтобы элементы основного списка отображались следующим образом:
И когда я нажимаю на строку, я правильно перехожу к подробному виду, как показано:
Проблема, с которой я сталкиваюсь, заключается в том, что если я поверну устройство вв подробном представлении, показанном выше, пока я нахожусь в подробном представлении, вращение корректно возвращается к splitView, однако теперь, когда я выбираю строку, метод делегата не обновляет подробное представление.Кажется, это работает, только если я начинаю в splitView и остаюсь в этом виде, или если я начинаю в свернутом виде и остаюсь в этом.Если я поверну, то метод делегата, похоже, не будет работать.
Я обнаружил предыдущую статью, в которой показано, как использовать метод делегата дляобновите подробный вид, используя целевой код C, используя функцию didSelectRow.Я попытался продублировать этот код следующим быстрым кодом:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let navigationVC = UINavigationController()
var detailVC = TestsDetailAdvertVC()
if let tests = controller.fetchedObjects, tests.count > 0 {
//if there is, keep track of the test which is selected
selectedTest = tests[indexPath.row]
if let isCollapsed = splitViewController?.isCollapsed {
if isCollapsed {
//solves problem of navigating to the detail view in compact view
// on the iPhone (compact) the split view controller is collapsed
// therefore we need to create the navigation controller and detail controller
detailVC = self.storyboard!.instantiateViewController(withIdentifier: "detailVC") as! TestsDetailAdvertVC
navigationVC.setViewControllers([detailVC], animated: false)
self.splitViewController?.showDetailViewController(detailVC, sender: self)
detailVC.testToEdit = selectedTest
} else {
// if the split view controller shows the detail view already there is no need to create the controllers
// so we just pass the correct test using the delegate
// if the test variable is set, then it calls the showDetail function
delegate?.testToEdit = selectedTest
}
}
}
}
Я думаю, что каким-то образом, когда тот или иной метод используется для обновления подробного представления, он работает, но затем, когда он переключается назад и впередперестает работать.Интересно, решил ли кто-нибудь эту проблему, используя быстрый код, который мог бы привести меня к примеру.
Примечание: После некоторого дополнительного поиска я понял, что есть несколько методов делегата для splitViewController, включая:
func primaryViewControllerForExpandingSplitViewController:
и
func primaryViewControllerForCollapsingSplitViewController:
и
splitViewontroller 10Control_Controllerвозиться с этими методами, но до сих пор не смог заставить их работать, и я не нашел ни одного поста, который показывает примеры их использования.
Спасибо.