gpt4 book ai didi

ios - TabBar/CollectionView 崩溃

转载 作者:行者123 更新时间:2023-11-29 05:54:37 26 4
gpt4 key购买 nike

所以我有一个继承自 UITabBarController 的 mainController 。在里面,我像这样设置 View Controller :

func setupControllers() {
let chatController = UINavigationController(rootViewController: ChatController())

let homeController = UINavigationController(rootViewController: HomeController())



viewControllers = [chatController, homeController]
}

在“homeController” View Controller 内,我添加了一个在 viewDidLoad 函数中设置的 collectionView subview 。

HomeController 类:UIViewController {

let userCollectionView = UserCollectionView()

override func viewDidLoad() {
super.viewDidLoad()

setupSubviews()
}

private func setupSubviews() {

view.addSubview(userCollectionView)
userCollectionView.protocolDelegate = self
userCollectionView.anchor(top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: nil, trailing: view.trailingAnchor, padding: .zero, size: .init(width: view.frame.width, height: 108))
}
}

在 UserCollectionView 中,在 viewDidLoad 中,我有一些 firebase 观察者,它们通过“insertItems/reloadItems”方法查询和提取数据以存储在 collectionView 中。

当我加载应用程序时,它崩溃了。我将其归结为 userCollectionView 说“部分中的无效项目”等,因为我一次加载一个 collectionView 单元格,而不是通过 self.reloadData() 重新加载完整的 collectionView。

当我将 viewController 的加载顺序更改为 [homeController, chatController] 时,它工作正常,因为这是加载的第一个 viewController。但是当我将其切换到 [chatController, homeController] 时,它崩溃了。

我已经在 viewWillAppear 中尝试了 setupSubviews,但是应用程序仍然崩溃。

甚至删除 colletionView 的设置,只拥有实例:

let userCollectionView = UserCollectionView()

崩溃。

崩溃错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of items in section 0.  The number of items contained in an existing section after the update (1) must be equal to the number of items contained in that section before the update (1), plus or minus the number of items inserted or deleted from that section (1 inserted, 0 deleted) and plus or minus the number of items moved into or out of that section (0 moved in, 0 moved out).'

我知道这与里面的collectionView“insertItems/reloadItems”函数有关,就像我删除它们一样,没有问题。我不明白为什么它会崩溃,因为 homeController 仍在加载所有方法/firebase观察者以流行其中的 userCollectionView ..它只是应用程序在启动时显示的初始 viewController 。

我该如何解决这个问题?

谢谢你的帮助

最佳答案

在 viewDidAppear 方法中添加观察者函数。

这样,当按下 homeController 选项卡时,就会调用观察者并更新 collectionView。

我很好奇为什么它会崩溃,因为有数据要插入到 collectionView 中。正在更新其 subview 的 viewController 是否必须可见才能有效?

关于ios - TabBar/CollectionView 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55286431/

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