Ios7 在UISearchDisplayController中选择一行后返回UISearchDisplayController会导致奇怪的行为

Ios7 在UISearchDisplayController中选择一行后返回UISearchDisplayController会导致奇怪的行为,ios7,xcode5,uisearchdisplaycontroller,Ios7,Xcode5,Uisearchdisplaycontroller,我正在XCode 5.1.1中为iOS 7创建一个应用程序,该应用程序使用一个表视图控制器,其结果按与用户的距离过滤(目前的默认行为)。我添加了搜索功能,除了它不会使用我的自定义UITableViewCell(这不是我需要帮助的问题,但我提到它的可能性很小,它可能与我当前的问题相关) 当我在普通表视图中选择一行并切换到详细信息屏幕并返回时,一切正常。当我在搜索显示控制器中搜索并选择一行时,它会转到正确的详细信息屏幕,但当我返回搜索结果时,它会在底部添加一行,该行通常会出现在常规表视图中。每次我在

我正在XCode 5.1.1中为iOS 7创建一个应用程序,该应用程序使用一个表视图控制器,其结果按与用户的距离过滤(目前的默认行为)。我添加了搜索功能,除了它不会使用我的自定义UITableViewCell(这不是我需要帮助的问题,但我提到它的可能性很小,它可能与我当前的问题相关)

当我在普通表视图中选择一行并切换到详细信息屏幕并返回时,一切正常。当我在搜索显示控制器中搜索并选择一行时,它会转到正确的详细信息屏幕,但当我返回搜索结果时,它会在底部添加一行,该行通常会出现在常规表视图中。每次我在搜索结果segue中选择一行,然后返回搜索结果屏幕时,另一行会添加到底部。这些行是可选的,但不执行分段。以下是一些有助于澄清问题的图片:

常规表视图行


选择行后的详细视图


从细节视图返回后的表格视图


搜索栏变为活动状态


搜索“the”后返回搜索结果,但不使用自定义tableviewcell


选择搜索结果后显示正确的详细信息视图


从详细视图返回到searchdisplaycontroller会显示搜索结果,但会向上推,隐藏搜索栏,并在结果下添加两个空行,然后是属于常规tableview的一行(使用自定义tableviewcell显示)


选择其他搜索结果将显示正确的详细信息视图


从详细信息视图返回到searchdisplaycontroller会显示搜索结果,但会将搜索结果向上推,隐藏搜索栏和顶部搜索结果,并在结果下添加两个空行,然后是属于常规tableview的两行(它们使用自定义tableviewcells显示)



听起来好像您在某个地方有一种方法,可以在最初将搜索栏从屏幕上滚动下来,每次您返回到负责搜索显示控制器的视图控制器时,都会重复调用该方法,将表视图越滚越高(可能通过ViewWillDisplay或ViewDidDisplay)

如果是这种情况,您可以检查“搜索显示”控制器的状态,并仅在其未处于活动状态时执行该方法,例如:

if (!self.searchDisplayController.isActive) {
    // safe to scroll off-screen
}

如果看不到您的代码,就很难诊断。

您完全正确!我已经添加了那个代码(确切地说是你的!),并发现这就是导致问题的原因。我已经删除了隐藏搜索栏的代码,并打算稍后尝试解决如何再次实现这个问题。谢谢你的帮助!