在 tableHeaderView iOS 7 中使用 UISearchBar 访问错误
Posted
技术标签:
【中文标题】在 tableHeaderView iOS 7 中使用 UISearchBar 访问错误【英文标题】:Bad Access With UISearchBar in tableHeaderView iOS 7 【发布时间】:2013-09-19 19:26:57 【问题描述】:我正在尝试在我的 UITableview 的 tableHeaderView 中使用 UISearch 栏。此搜索功能在 ios 6 上没有问题,但由于针对 7.0 SDK 构建,我在从另一个视图返回后点击搜索栏时出现崩溃。第一次查看搜索tableView,搜索栏按预期工作。但是一旦我深入到详细视图,当我点击它时,搜索栏会抛出一个 exc-bad-access 异常。在我的方案中使用 NSZombies 不会记录这种不良访问。这是设置标题视图的代码:
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];
self.searchController = [[UISearchDisplayController alloc]
initWithSearchBar:self.searchBar contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
self.tableView.tableHeaderView = self.searchBar;
属性self.searchBar
和self.searchController
都被声明为强引用。任何地方都收到无内存警告。 iOS 7 中的 UISearchBar 或 tableHeaderView 有什么变化吗?值得注意的是,我正在向 UISearchBar 应用外观代理,但它在第一次加载时看起来和工作正常。
【问题讨论】:
【参考方案1】:我在 iOS7 中遇到了 UISearchBar 崩溃的问题,直到我在 UITableViewController 被解除之前开始将我的 UISearchDisplayController 设置为非活动状态。添加以下内容对我有用,但我不知道我们的问题是否相关:
[_mySearchDisplayController setActive:NO];
【讨论】:
【参考方案2】:原来崩溃是由于使用了sectionIndexTitlesForTableView
和UISearchDisplayController
(参见this question)。这似乎是 iOS 7 SDK 中的一个错误。相反,我现在使用CMIndexBar 作为第三方替代品。就像原生部分索引一样工作,永不崩溃,易于定制。
【讨论】:
以上是关于在 tableHeaderView iOS 7 中使用 UISearchBar 访问错误的主要内容,如果未能解决你的问题,请参考以下文章
-systemLayoutSizeFittingSize:在 iOS 8 下为 tableHeaderView 返回不正确的高度
iOS UITableView tableHeaderView 高度变了
在 ios7 上滚动 uitableview 时出现 UISearchbar (tableHeaderView) 问题
iOS UITableView 在设置 TableHeaderView 后以编程方式覆盖自动布局约束