【发布时间】:2026-01-08 08:25:03
【问题描述】:
我有创建UISearchController' in my UIVIew'sviewDidLoad`的代码。
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.searchBar.delegate = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.hidesNavigationBarDuringPresentation = false //prevent search bar from moving
controller.searchBar.placeholder = "Search for song"
self.myTableView.tableHeaderView = controller.searchBar
return controller
})()
在此关闭完成后,控制台中会立即出现此警告:
Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<UISearchController: 0x154d39700>)
我不明白我做错了什么。 This similar question 并不是我的实际情况(至少我不这么认为)。怎么回事?
【问题讨论】:
-
xkcd.com/583 如果我把它扔到我的表 VC
viewDidLoad()中就可以了。建议 a) 包括完整的 VC 源代码清单和 b) 确保错误确实发生在您认为的时间和地点。 -
另外,做更多的研究,例如:*.com/questions/31006045/… 有同样的错误
-
所以,我做了一个 swift 项目,一切都以编程方式完成,没有故事板,我没有问题,这是故事板的问题,也许,我不知道,但我假设你正在使用故事板,对吗?当我以编程方式说时,我的意思是没有笔尖,没有情节提要,所有代码都可以正常工作
-
@BaseZen 我在
})()之前和})()之后设置了一个断点。闭包结束后抛出错误。我有一个UIViewController,而不是tableViewController。 -
@Larcerax 我确实有一个故事板。它只包含一个 Navigation Controller 和一个 UIViewController(它们是相连的。)
标签: ios swift uisearchcontroller