Как сделать segue переход на UISplitviewcontroller?


#1

Как сделать segue переход с TableViewController на UISplitviewcontroller, в котором TableViewController?

Можно модальный переход сделать, но тогда не лезя вернуться назад с UISplitviewcontroller на TableViewController, а это нужно.

Пробовал вот так:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
     let indexPath = tableView.indexPathForSelectedRow
     let vc = self.storyboard?.instantiateViewController(withIdentifier: "TableViewController") as! TableViewController
     vc.nameDetail = monsters[indexPath!.row].name
     splitViewController?.show(vc, sender: self)
}

И так

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     let indexPath = tableView.indexPathForSelectedRow
     let vc = self.storyboard?.instantiateViewController(withIdentifier: "TableViewController") as! TableViewController
     vc.nameDetail = monsters[indexPath!.row].name
     self.navigationController?.pushViewController(vc, animated: true)
     
     let controller = (segue.destination as! UINavigationController).topViewController as! TableViewController
     if segue.identifier == "showDetail" {
        if let indexPath = tableView.indexPathForSelectedRow {
            let controller = (segue.destination as! UINavigationController).topViewController as! TableViewController
            controller.nameDetail = monsters[indexPath.row].name
            controller.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem
            controller.navigationItem.leftItemsSupplementBackButton = true
            controller.navigationItem.setHidesBackButton(false, animated: true)
        }
    }
}

#2

Почему нельзя, Unwind пробовали? И второй вопрос - данные во втором TVC будут просто показываться или редактироваться? Если показываться, то Show, если редактироваться, то Modally present.


#3
  1. Unwind не пробовал
  2. Данный будут показываться

Мне кажется что здесь вообще Push, так как у Push есть значения Destination: Master Split и Detail Split, но как этим пользоваться не понимая и не нахожу…


#4

у вас какой-то очень сложный код, сигвей делается гораздо проще. Я попробовал сделать простой переход через Show Detail и возврат через unwind, все работает нормально.


#5

Делали переход с TableViewController на UISplitviewcontroller?
Скиньте проект если не сложно, посмотрю


#6

я его делал на ходу, на общем компьютере. Да там и кода практически нет, все через IB.

На мой взгляд вам стоит подумать насчет первого TVC, нужен ли он, насколько это критично? В документации говорится, что сплит как правило делается рутовым. И что встраивать его в другие вью можно, но они этого не рекомендуют. Заодно глянул одним глазом пару видео, там они все загружают исходные данные сразу в мастер и детайл вью, без отдельного входного TVC.

И если вы начинаете программировать, то зачем вам усложнять себе задачу, если даже опытные разработчики не советуют этого делать? Тогда все эти проблемы с переходами могут просто не понадобиться.


#7

Видео уже все просмотрел, с отдельным входным TVC нету. Нужно чтоб первый был именно TVC, а потом уже сплит. По другому ни как.


#8

ну если никак, тогда расскажите более подробно как вы делаете сам переход с первого TVC. На что пользователь должен кликнуть? И зачем у вас в ячейке вставлен label, если он там и так по умолчанию уже есть?


#9

Пользователь должен кликнуть на ячейку.
label вставлен, потому что люблю кастомные ячейки)
Вот ссылка на проект: https://yadi.sk/d/fvb_wYdcJ8eVNw


#10

в зипе переход. А с передачей данных надо отдельно разбираться, я со сплитом не работал.


#11

Спасибо, но это не то.
С Show Detail тоже так могу, надо чтоб через segue и Show(e.g. push). Чтоб стрелочка назад была, а не кнопка!


#12

такой вариант не прокатит - “You cannot push a split view controller onto a navigation stack.”


#13

Понимаю, по этому и создал эту тему!)


#14

Готов даже заплатить, чтоб сделали как мне нужно!