加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – ios 7中的新UISearhBar

发布时间:2020-12-15 01:48:39 所属栏目:百科 来源:网络整理
导读:嗨,大家好. 我在iOS 7中使用新的uisearchbar时遇到了一些麻烦 在我的应用程序中,在tableHeaderView中有一个带有搜索栏的tableview 它是手工制作的(以编程方式添加) – 在storyboard中的tableviewcontroller,在方法viewDidLoad中我添加了searchDisplayControl
嗨,大家好.

我在iOS 7中使用新的uisearchbar时遇到了一些麻烦

在我的应用程序中,在tableHeaderView中有一个带有搜索栏的tableview
它是手工制作的(以编程方式添加) – 在storyboard中的tableviewcontroller,在方法viewDidLoad中我添加了searchDisplayController,我的自定义搜索栏继承自UISearchBar.

所有事情都在导航控制器中.

我的应用程序的逻辑在某些方面我发布这个导航控制器发送dismissViewController

在ios 6中它完美无缺.

但是在ios 7中我尝试发布导航控制器时会崩溃.

在日志我有趣的线…

到viewDidLoad的末尾我添加这个:

for (UIView *view in self.view.subviews) {
    NSLog(@"%@ %p",[view.class description],view);
}

在ios 6我只有这个

2013-09-19 12:40:40.553 myApp[4182:c07] KRSearchBar 0x988bdd0

在ios 7中:

2013-09-19 13:08:47.808 myApp[4690:a0b] UIView 0xa265310
2013-09-19 13:08:47.809 myApp[4690:a0b] UITableViewWrapperView 0xa25b4d0
2013-09-19 13:08:47.810 myApp[4690:a0b] KRSearchBar 0xa2591b0

并且在释放导航控制器之后我有

2013-09-19 13:09:32.419 myApp[4690:a0b] *** -[UIView release]: message sent to     deallocated instance 0xa265310

所以…谁知道UIView是什么?它来自何处以及如何处理它?

解决方法

iOS 7确实改变了有关tableviews及其委托的一些规则.
当然,这并没有突出显示在易于找到的地方.

但基本上,在早期版本的iOS中,您可以选择性地淘汰tableView委托和数据源.不这样做不发送任何错误消息.

从iOS 7开始,你必须在你的dealloc中取消它们,否则它会导致崩溃.

- (void)dealloc
{
fetchedResultsController.delegate = nil;
self.searchDisplayController.delegate = nil;
self.searchDisplayController.searchResultsDelegate = nil;
self.searchDisplayController.searchResultsDataSource = nil;
self.tableView.delegate = nil;
self.tableView.dataSource = nil;    
}

如果这解决了您的问题,请告诉我.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读