gpt4 book ai didi

ios - 在不知道其索引的情况下选择 UITabBarController 中的特定 viewController

转载 作者:搜寻专家 更新时间:2023-10-31 22:38:06 25 4
gpt4 key购买 nike

我有一个由多个选项组成的UItabBarController(称为tabBarController)。我还有一个 UITableView,它的第一行是一个选项,应该让用户导航到特定的 viewController

我的 didSelectRowAt 委托(delegate)方法看起来像这样:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

if tableView.cellForRowAt(at: indexPath)?.textLabel?.text == "Navigate to BrowseViewController" {
/* BrowseViewController is currently the second item in the
tabBarController, so I just select its index to navigate to it */
tabBarController?.selectedIndex = 2
}
}

现在,这适用于我目前的情况,因为我知道 tabBarController 中的第二项是我正在寻找的 UIViewController,但我想让我的应用面向 future ,以便如果将来更改 tabBarController 中的 viewControllers 的顺序,tableView 不会中断.

换句话说,我想知道是否有一种方法可以先从 tabBarController 中提取我要查找的 viewController 的索引,然后使用该索引来导航到它,像这样:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

if tableView.cellForRowAt(at: indexPath)?.textLabel?.text == "Navigate to BrowseViewController" {

let browseViewControllerIndex = Int()
/* iterate through tabBarController's VC's and if the type of the VC
is BrowseViewController, find its index and store it
in browseViewController */
}
}

最佳答案

你可以试试这样的:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

if tableView.cellForRowAt(at: indexPath)?.textLabel?.text == "Navigate to BrowseViewController" {

// safely get the different viewcontrollers of your tab bar
// (viewcontrollers is an optional value)
guard let tabs = tabBarController.viewcontrollers else { return }

// index(of:) gets you the index of the specified class type.
// Also an optional value
guard let index = tabs.index(of: BrowseViewController()) else { return }
tabBarController?.selectedIndex = index
}
}

关于ios - 在不知道其索引的情况下选择 UITabBarController 中的特定 viewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53228259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com