Можно ли перейти от контроллера панели вкладок к другому контроллеру панели вкладок? - PullRequest
1 голос
/ 16 мая 2019

У меня есть приложение с тремя вкладками в качестве корневой навигации, и на первой вкладке есть табличное представление.Поэтому, когда пользователь нажимает на ячейку таблицы, пользователь должен перейти к другому представлению, которое содержит две вкладки.Как мне этого добиться?

Текущий раскадровка

enter image description here

Это то, что я имею до сих пор.Я все еще изучаю ios development и хочу знать, возможно ли это

Ответы [ 3 ]

3 голосов
/ 16 мая 2019

Удалите последовательность раскадровок из представления таблицы на второй контроллер панели вкладок. И представьте второй контроллер панели вкладок из метода didSelectRowAt контроллера табличного представления. И вы можете передавать данные на встроенные контроллеры представления, как это

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if let secondTabBarController = self.storyboard?.instantiateViewController(withIdentifier: "SecondTabBarController") as?  SecondTabBarController {
        if let navControllers = secondTabBarController.viewControllers as? [UINavigationController] {
            if let fourthVC = navControllers.first(where: { $0.topViewController is FourthVC })?.topViewController as? FourthVC {
                fourthVC.name = "name"
            }
            if let fifthVCvc = navControllers.first(where: { $0.topViewController is FifthVC })?.topViewController as? FifthVC {
                fifthVCvc.id = 20
            }
        }
        self.present(secondTabBarController, animated: true, completion: nil)
    }
}

Заменить имена классов и идентификаторы раскадровки на правильные имена классов и идентификаторы

class FourthVC: UIViewController {
    var name: String?
    override func viewDidLoad() {
        super.viewDidLoad()
        print(name)
    }
}
class FifthVC: UIViewController {
    var id: Int?
    override func viewDidLoad() {
        super.viewDidLoad()
        print(id)
    }
}
0 голосов
/ 16 мая 2019

При нажатии на строку в табличном представлении вы можете использовать такой код:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        // Segue to the other UITabBarController, pass selected information

        let selectedCell = tableView.cellForRow(at: indexPath.row)

        if let viewController = self.storyboard?.instantiateViewController(withIdentifier: "YourTabBarControllerIdentifier") as? YourTabBarController {
            viewController.selectedIndex = 2 // or the index you want by default
            viewController.modalTransitionStyle = .crossDissolve // or transition you want

            self.present(viewController, animated: true, completion: nil)
        }

    }
0 голосов
/ 16 мая 2019

Да, вы устанавливаете любую проверку для этого в контроллере с одной вкладкой в ​​соответствии с этим условием, какую вкладку вы хотите показать, сбросить их.

...