首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从UITableView 11搜索控制器导航时不需要的iOS重新加载动画

从UITableView 11搜索控制器导航时不需要的iOS重新加载动画
EN

Stack Overflow用户
提问于 2018-03-08 16:16:00
回答 8查看 1.4K关注 0票数 7

我有一个视图控制器,它有一个包含聊天列表的表视图,一个包含在导航项中的搜索控制器(iOS 11特性)。

代码语言:javascript
复制
let searchController = UISearchController(searchResultsController: nil)
searchController.dimsBackgroundDuringPresentation = false
navigationItem.searchController = searchController
definesPresentationContext = true

当用户在表视图中点击聊天时,应用程序会使用另一个包含聊天消息的表视图推送一个新的视图控制器。它的工作原理是:

问题是,当用户激活搜索控制器,找到一些聊天并点击它时,包含有聊天消息的表视图的推视图控制器使用不应该发生的表视图做一些非常奇怪的动画。

我在实际导航之前加载数据,并使用表视图上的viewDidLoad仅使用reload()将其绑定到表视图中的表视图。有问题的表视图使用自动布局和自定义单元格。

这个问题与UITableView has unwanted animation when reloadData is called非常相似,但对我来说,只有当iOS 11搜索控制器处于活动状态时才会发生这种情况。

编辑:如果我删除tableView.rowHeight = UITableViewAutomaticDimension并使用固定高度使用func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat,那么问题仍然存在

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2018-03-18 09:50:04

就我个人而言,在呈现新的视图控制器之前,我只需要隐藏searchView控制器。(例如,将UIView.animates与完成处理程序一起使用)

我不打算进一步研究,因为自从iOS11以来,在安全区管理中存在一个深奥的问题。窃听器?)

即使是发射屏幕布局也没有得到正确处理。如此多的专业标志错过了他们的中间部分在启动!

票数 0
EN

Stack Overflow用户

发布于 2018-03-19 10:42:17

如果您只是在推出新的searchBar之前隐藏viewController,那么它可能会解决您的问题。

您需要为searchBarCancelButton创建一个全局变量,并在搜索某些内容时从其子视图中找到cancel按钮。

代码语言:javascript
复制
let buttons = searchController.searchBar.subviews.first?.subviews.filter { (view) -> Bool in
            return NSStringFromClass(view.classForCoder) == "UINavigationButton"
        } as? [UIButton]
        searchBarCancelButton = buttons?.first

然后你可以手动取消它。

代码语言:javascript
复制
self.searchBarCancelButton?.sendActions(for: .touchUpInside)
票数 4
EN

Stack Overflow用户

发布于 2018-03-08 16:31:51

您可以尝试在去队列和设置单元格的内容之后立即调用cell.layoutIfNeeded()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49177696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档