gpt4 book ai didi

ios - 使用 popViewControllerAnimated(true) 导航出 UITableView 时如何修复 UISearchController 的警告

转载 作者:行者123 更新时间:2023-11-30 13:32:15 24 4
gpt4 key购买 nike

searchController 在 TableViewController 的 viewDidLoad() 中声明为 searchController = UISearchController(searchResultsController: nil)。当用户在当前 TableView 中选择一行时,它会使用 self.navigationController?.popViewControllerAnimated(true) 导航到上一个 View Controller 。每当发生这种情况时,我都会收到警告 -

"Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior"

为了避免这种情况,我在调用导航 Controller 上的 popViewControllerAnimated(true) 之前从 super View 中删除搜索 Controller 。

如果搜索处于事件状态并且选择了一行,我不会收到相同的警告。可能是因为我首先关闭搜索 Controller ,然后弹出到前一个 Controller ,所以在这种情况下它工作正常。但是,如果我在所有情况下都关闭搜索 Controller ,无论搜索是否处于事件状态,都没有帮助。

这是代码。

//Dismiss searchController if active & Navigate to previous view controller on row selection
if self.searchController.active {
self.searchController.dismissViewControllerAnimated(true, completion: {
self.navigationController?.popViewControllerAnimated(true)
})
}
else {
//remove UISearchController from superView
self.searchController.view.superview?.removeFromSuperview()
self.navigationController?.popViewControllerAnimated(true)
}

我想了解这是否是上面在 else block 中的正确方法,或者我应该在以下内容中执行相同的操作:-

  1. viewWillDisappear/viewDidDisappear
  2. deinit{
    如果让 superView = searchController.view.superview
    {
    superView.removeFromSuperview()
    }
    }

哪一项是正确的做法?

最佳答案

我认为第一个是更好的选择,在将其从 super View 中删除之前检查是否处于事件状态。

关于ios - 使用 popViewControllerAnimated(true) 导航出 UITableView 时如何修复 UISearchController 的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36444517/

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