是否可以从一个标签栏控制器导航到另一个标签栏控制器?
Is it possible to navigate from a tab bar controller to another tab bar controller?
我有一个包含三个选项卡作为根导航的应用程序,第一个选项卡中有一个 table 视图。因此,当用户单击 table 单元格时,用户应导航到另一个包含两个选项卡的视图。我该如何实现?
当前故事板
这就是我目前所拥有的。我仍在学习 ios 开发,我想知道这是否可行
是的,您根据此条件在单个选项卡控制器中设置了任何检查,您希望显示哪个选项卡从他们的重置。
当点击 table 视图中的行时,您可以使用如下代码:
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)
}
}
从 table 视图中移除故事板 segue 到第二个标签栏控制器。并显示来自 table 视图控制器的 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: { [=10=].topViewController is FourthVC })?.topViewController as? FourthVC {
fourthVC.name = "name"
}
if let fifthVCvc = navControllers.first(where: { [=10=].topViewController is FifthVC })?.topViewController as? FifthVC {
fifthVCvc.id = 20
}
}
self.present(secondTabBarController, animated: true, completion: nil)
}
}
用正确的 class 名称和标识符替换 class 名称和故事板标识符
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)
}
}
我有一个包含三个选项卡作为根导航的应用程序,第一个选项卡中有一个 table 视图。因此,当用户单击 table 单元格时,用户应导航到另一个包含两个选项卡的视图。我该如何实现?
当前故事板
这就是我目前所拥有的。我仍在学习 ios 开发,我想知道这是否可行
是的,您根据此条件在单个选项卡控制器中设置了任何检查,您希望显示哪个选项卡从他们的重置。
当点击 table 视图中的行时,您可以使用如下代码:
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)
}
}
从 table 视图中移除故事板 segue 到第二个标签栏控制器。并显示来自 table 视图控制器的 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: { [=10=].topViewController is FourthVC })?.topViewController as? FourthVC {
fourthVC.name = "name"
}
if let fifthVCvc = navControllers.first(where: { [=10=].topViewController is FifthVC })?.topViewController as? FifthVC {
fifthVCvc.id = 20
}
}
self.present(secondTabBarController, animated: true, completion: nil)
}
}
用正确的 class 名称和标识符替换 class 名称和故事板标识符
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)
}
}