ios - 如何在警报中允许位置权限时显示 TableViewController?
问题描述
我的故事板流程是:
LaunchScreen
-> LoginViewController
-> LocationPermissionViewController
-> TabbarController
-> NavigationController
-> RestaurantsTableViewController
-> DetailViewController
。
用户登录后,当用户单击Allow
权限警报中的选项时,应显示应用程序RestaurantsViewController
在标签栏控制器和导航控制器中。问题是用户单击Allow
警报、导航和选项卡中的选项,shown
但表格视图是not show
。
rootViewController
允许后我尝试制作标签栏。但是正如我所说的导航和标签栏还可以,但是表格视图数据没有显示出来。
这是关于我的问题的屏幕录制链接:
youtube.com/watch ?v=05Jumd4Bm6Q&feature=youtu.be
表视图数据正在加载到此函数中,该函数位于AppDelegate
.
private func loadBusinesses(with coordinate: CLLocationCoordinate2D) {
service.request(.search(lat: coordinate.latitude, long: coordinate.longitude)) { [weak self]
(result) in
guard let strongSelf = self else { return }
switch result {
case .success(let response):
let root = try? strongSelf.jsonDecoder.decode(Root.self, from: response.data)
let viewModels = root?.businesses
.compactMap(RestaurantListViewModel.init)
.sorted(by: { $0.distance < $1.distance })
if let nav = strongSelf.window.rootViewController as? UINavigationController,
let restaurantListViewController = nav.topViewController as? RestaurantTableViewController {
restaurantListViewController.viewModels = viewModels ?? []
//When Allow option tapped in location permission alert
} else {
let tab = strongSelf.storyboard
.instantiateViewController(withIdentifier: "TabbarController") as! UITabBarController
let appDelegate = AppDelegate.shared
appDelegate.window.rootViewController = tab
let restaurantTableViewController = self!.storyboard.instantiateViewController(withIdentifier: "RestaurantTableViewController") as? RestaurantTableViewController
tab.viewControllers = [restaurantTableViewController] as! [UIViewController]
}
case .failure(let error):
print ("Error: \(error)")
}
}
}
如果else
我把这些代码块放在块中,tableView 显示它是数据。
{
strongSelf.navigationController = nav
strongSelf.window.rootViewController?.present(nav, animated: true) {
(nav.topViewController as? RestaurantTableViewController)?.delegate = self
(nav.topViewController as? RestaurantTableViewController)?.viewModels = viewModels ?? [] }
}
我没有收到任何错误。预期结果是用户应该RestaurantsTableViewController
在点击允许按钮后看到。
解决方案
推荐阅读
- freemarker - Freemarker:将日期从科学记数法转换为数字
- sql - 将(翻译)从一种 sql 语法转换为另一种(从 mssql 到 oracle、h2...)
- excel - XMLhttp 请求仅从 Salesforce (Excel VBA) 返回 250 条记录
- python - Postgres 像 SQLite 那样传递元组
- django - 如何在 Django 的多对多关系中获取 models.CASCADE?
- c# - Revit API C# 插入和旋转族
- python - 查找二维数组中元素的索引
- python - openpyxl(3.0.3) 保存功能需要很长时间
- javascript - 使用 Python 3.7 选中 HTML 页面中的复选框
- html - 使整个伪元素可点击