- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 StoryBoards 的项目,并且在 UINavigationController
的上下文中使用 UISearchDisplayController
,它出现在 Root View Controller 中。当我将新的 View Controller 插入堆栈时,会导致模拟内存警告(或实际上收到内存不足警告)。先前的 View Controller 已成功卸载其 View 。但是,当我从堆栈中弹出第二个 View Controller 时,我得到一个 EXC_BAD_ACCESS
。我打开 NSZombies 并发现了这一点:
[UISearchDisplayController retain]: message sent to deallocated instance 0xb13aa30
我没有(至少在我的代码中)将该消息发送到 UISearchDisplayController
。从程序上来说,我没有用它做任何事情。断点显示我什至没有将其放入第一个 View Controller 的 viewDidLoad
中。
不过,有些奇怪的是:为了笑声和咯咯笑,我决定在我的 viewDidLoad
中完全保留
SDC,只是为了看看会发生什么并且不会发生崩溃。但是,我的 UISearchDisplayController
实例是 nil
。
我做了回溯并得到了这个输出:
#0 0x01e30e1e in ___forwarding___ ()
#1 0x01e30ce2 in __forwarding_prep_0___ ()
#2 0x01dd1490 in CFRetain ()
#3 0x01eb69c0 in +[__NSArrayI __new::] ()
#4 0x01e0a00a in -[__NSPlaceholderArray initWithObjects:count:] ()
#5 0x01e34f52 in +[NSArray arrayWithObjects:count:] ()
#6 0x01e5e084 in -[NSDictionary allValues] ()
#7 0x01035272 in -[UINib instantiateWithOwner:options:] ()
#8 0x00edce2c in -[UIViewController _loadViewFromNibNamed:bundle:] ()
#9 0x00edd3a9 in -[UIViewController loadView] ()
#10 0x00edd5cb in -[UIViewController view] ()
#11 0x00edd941 in -[UIViewController contentScrollView] ()
#12 0x00eef47d in -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] ()
#13 0x00eef66f in -[UINavigationController _layoutViewController:] ()
#14 0x00eef93b in -[UINavigationController _startTransition:fromViewController:toViewController:] ()
#15 0x00ef03df in -[UINavigationController _startDeferredTransitionIfNeeded] ()
#16 0x00ef16cb in _popViewControllerNormal ()
#17 0x00ef196c in -[UINavigationController _popViewControllerWithTransition:allowPoppingLast:] ()
#18 0x0b446e82 in -[UINavigationControllerAccessibility(SafeCategory) _popViewControllerWithTransition:allowPoppingLast:] ()
#19 0x00ef0b10 in -[UINavigationController popViewControllerAnimated:] ()
#20 0x00ef297d in -[UINavigationController navigationBar:shouldPopItem:] ()
#21 0x00e7dabe in -[UINavigationBar _popNavigationItemWithTransition:] ()
#22 0x00e7da49 in -[UINavigationBar popNavigationItemAnimated:] ()
#23 0x0b42208c in -[UINavigationBarAccessibility(SafeCategory) popNavigationItemAnimated:] ()
#24 0x00e80507 in -[UINavigationBar _handleMouseUpAtPoint:] ()
#25 0x00e8074c in -[UINavigationBar touchesEnded:withEvent:] ()
#26 0x00e3fa30 in -[UIWindow _sendTouchesForEvent:] ()
#27 0x00e3fc56 in -[UIWindow sendEvent:] ()
#28 0x00e26384 in -[UIApplication sendEvent:] ()
#29 0x00e19aa9 in _UIApplicationHandleEvent ()
#30 0x02d37fa9 in PurpleEventCallback ()
#31 0x01e9e1c5 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#32 0x01e03022 in __CFRunLoopDoSource1 ()
#33 0x01e0190a in __CFRunLoopRun ()
#34 0x01e00db4 in CFRunLoopRunSpecific ()
#35 0x01e00ccb in CFRunLoopRunInMode ()
#36 0x02d36879 in GSEventRunModal ()
#37 0x02d3693e in GSEventRun ()
#38 0x00e17a9b in UIApplicationMain ()
#39 0x00002b72 in main (argc=1, argv=0xbffff620)
那里似乎没有任何真正有趣的东西(有过吗?:P),而且似乎都是苹果公司内部的东西。关于如何解决这个问题有什么想法吗?
更新:即使我删除了 View Controller 与搜索显示 Controller 的属性之间的连接,但为其创建了自己的 IBOutlet
,它仍然会崩溃。也许是坏错误?
更新2:当我以编程方式创建自己的UISearchDisplayController
实例(不是通过 Storyboard)并在viewDidLoad
中创建它时,一切按照预期的方式工作。
更新 3:我能够在带有 Storyboard的新项目中一致地重现此问题。我用 Vanilla Nib 做了同样的事情,一切都按照预期的方式进行。然而,如果我使用 Storyboard和转场设置相同的东西,它就会像在我的真实项目中一样爆炸。 :(
回顾:以下是重现此问题的步骤:
UISearchDisplayController
在 Storyboard中创建 View Controller viewDidLoad
此时甚至没有在第一个 View Controller 上被调用,Apple 的代码在此之前就崩溃了。
最佳答案
这是我所做的(当然,这是一种解决方法,而不是针对 Apple 错误的修复):
首先,在基本 UIViewController
中,我创建了一个名为 searchController
的属性:
@property (nonatomic, retain) IBOutlet UISearchDisplayController* searchController;
我通过界面生成器添加了一个 UISearchBar
,以便我的 UI 中有一个占位符。然后,在我的 viewDidLoad
中,我手动设置 Controller 并连接它:
UISearchDisplayController* searchController = [[UISearchDisplayController alloc]
initWithSearchBar:self.searchBar contentsController:self];
searchController.searchResultsDataSource = self;
searchController.searchResultsDelegate = self;
searchController.delegate = self;
self.searchController = searchController;
[searchController release];
在我的viewDidUnload
中,我确保将其清除:
self.searchController = nil;
关于iphone - UISearchDisplayController 在 viewDidUnload 后导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8567525/
当我在 ViewController 中提供 IBOutlet 对象时,我无法在 InterfaceBuilder 中找到它们来链接到 View 中的对象。 一段时间后它会自动出现...(我已正确设置
我有一个在 Interface Builder 中正确连接的 UISearchDisplayController。 delegate = Files Owner searchBar = Search
我正在尝试找出使用 UISearchDisplayController 执行快速搜索的最佳方法。 我有一个包含超过 36000 个条目的 plist 文件。我将此文件加载到字典中,然后在该字典中执行搜
过去我一直以编程方式完成所有工作,但现在我正在尝试学习使用 Interface Builder。本身就是一种体验。 我的问题出在UISearchDisplayController上。只需将其放在我的
我有一个应用程序,它异步搜索远程 API 并使用 iOS 的 UISearchDisplayController 显示 UI。 对于已保存的搜索功能,我一直在尝试以编程方式使用 UISearchDis
我的 uisearchdisplaycontroller 遇到问题。如果我将 Controller 的搜索栏添加到 TableView 标题 View 中,它会在搜索栏上方显示一条细白线!如果我添加搜
alt text http://img210.imageshack.us/img210/5992/searchdisplaycontroller.png 以下对象可以自定义吗? 1。 UISearch
我正在尝试设置一个搜索显示 Controller 来处理来自网络服务的异步结果。我已经掌握了基本的部分,但遇到了一个非常奇怪的问题,我无法弄清楚。 似乎要为异步设置搜索显示 Controller ,您
UISearchDisplayController 非常方便,实现搜索也非常简单。 但是,当在我的应用程序中我想显示带有空搜索字符串但选定范围按钮的搜索结果时,我遇到了问题。 似乎必须输入一些搜索字符
当用户单击“搜索”按钮时,我想关闭 UISearchDisplayController,因为我正在从网络加载新数据。如何以编程方式关闭 Controller ?我已经调用了正确的方法,但不知道该怎么做
我已将 Interface Builder 中的 UITableView 行高设置为 54.0。我在该 View 上有一个 UISearchDisplayController 。当用户点击其中的搜索栏
我正在处理带有搜索栏的 View 。当搜索激活时,导航栏应该动画化(即像 -[navigationController setNavigationBarHidden:animated:]。 我已经使用
我一直在阅读有关 UISearchDisplayController 及其 delegate 的所有文档,但我找不到任何方法可以在搜索条件更改时为表格 View 设置动画。 我正在使用这两种方法: 它
谁能简单地解释一下 UISearchDisplayController 的必要性? ?我实际实现了UISearchBar在我的类里面独自一人,并使用表格 View 来显示结果。它工作正常。 我做了一个
我使用UISearchDisplayController并搜索一种禁用自动搜索的方法。 有办法吗? 最佳答案 这是您的answer,它对它的工作方式有很好的解释。我曾想过为您提供答案,但我想让您了解更
我遇到了试图在我的 UISearchDisplayController 中显示搜索结果的问题。和 TableView Controller 。 我有用于获取搜索结果的 REST API 服务器端点,当
当您没有在 UISearchDisplayController 的 UISearchBar 中输入任何文本时,它会在之前的表格上显示一个半透明的覆盖层。我想加载在这种情况下搜索时出现的表格,以显示最近
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 问题必须表现出对正在解决的问题的最低限度的理解。告诉我们您尝试过的方法、为什么不起作用以及它应该 起作用
我想在用户开始搜索之前用数据源中的所有数据加载搜索显示 Controller 的 TableView 。 我用过 [self.searchDisplayController.searchResults
我有一个 TableView ,与 UISearchDisplayController 结合使用,后者将 UISearchBar 合并到 TableView 的标题中。当用户点击键盘上的“搜索”时,我
我是一名优秀的程序员,十分优秀!