-3

我将 searchBar 和 searchDisplayController 放在作为主标签栏的标签栏中。
当我通过推打开新的视图控制器时没有问题。

mainTabbar -> navigationController+searchController -(push after rowdidselect)-> newVC -(push)-> newVC -(push)-> ...

但是当我做一些现在的模态时。

mainTabbar -> navigationController+searchController -(push after rowdidselect)-> newVC -(modal)-> newVC

然后返回 searchResult

mainTabbar -> 导航控制器+搜索控制器

我无法再次推送 newViewController 并收到以下错误:

[__NSCFString setView:]: unrecognized selector sent to instance 0x8292720

我怎么了?所有结果都只是告诉我有关手势识别器的信息。

::启用僵尸后,我收到了此消息

-[UITapGestureRecognizer 保留]:发送到已释放实例 0xfcd83b0 的消息

我猜在 searchDisplayController 表的单元格中的 TapGestureRecognizer 已被释放。有人知道如何保留它们吗???

4

1 回答 1

0

您并没有真正提供有关您的案例的太多信息,但通常是错误日志:

[__NSCFString setView:]: unrecognized selector sent to instance 0x8292720

表示您试图将setView消息发送到类型错误的对象NSString

由于您说您的代码在一种情况下工作,我认为这不是将消息发送到错误对象的问题。相反,这与被释放的正确对象有关,并且它的内存被重用于NSString对象(然后接收消息)。

我怀疑关键可能在于您如何返回搜索结果,但您应该提供更多代码让我们了解正在发生的事情。

于 2013-02-17T08:59:35.897 回答