我正在尝试通过在单元格上进行选择来过渡到其他UIViewController
(属于UITabBarController
的一部分)。
我有一个HistoryViewController
,其中包含此单元格和表格视图。用户通过LoginViewController
登录后,此“历史记录视图控制器”即为“模态当前上下文”。不知道这对问题是否重要,但我认为值得一提。
这是层次结构:
-LoginViewController
-> HistoryViewController
(这是下面列出的代码)
-ViewController
(一旦用户单击特定的单元格,我就会尝试进入该位置。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
LocationInformation.city = locations[indexPath.row].city
LocationInformation.state = locations[indexPath.row].state
self.tabBarController?.selectedIndex = 1
}
目标是将位置的城市和州设置为全局变量“ LocationInformation”(有效),然后更改为无效的ViewController
。
代码self.tabBarController?.selectedIndex = 1
在另一个我称为“ searchViewController”的viewController中工作,用户可以在其中输入其位置和状态。
答案 0 :(得分:2)
我认为问题出在这里
一旦用户通过LoginViewController登录,此“历史记录视图控制器”即为“模态当前上下文”。
以模态显示控制器时,新堆栈中没有tabBarController。您可以通过调试self.tabBarController的值进行检查,我认为它将是nil
解决方案
如果TabBarController是根视图控制器,请使用此:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
LocationInformation.city = locations[indexPath.row].city
LocationInformation.state = locations[indexPath.row].state
let rootViewController = UIApplication.shared.keyWindow!.rootViewController
(rootViewController as? UITabBarController)?.selectedIndex = 1
}