单击“自定义返回”按钮,从详细信息页返回到上一个tableview正在崩溃应用程序(仅在iOS8中)

单击“自定义返回”按钮,从详细信息页返回到上一个tableview正在崩溃应用程序(仅在iOS8中),ios,objective-c,uitableview,ios8,Ios,Objective C,Uitableview,Ios8,我有一个应用程序具有以下结构 首先,当我单击主页上的一个按钮时,它将打开一个新的UITableView并显示“主程序”列表,当用户单击其中任何一个时,将打开另一个视图控制器并显示所有“子程序”,用户可以选择每个子程序以查看详细信息 在iOS 7版本之前,所有这些都可以正常工作。最近我将设备升级到iOS 8(iPad和iPhone),然后运行相同的代码,当我们从“子程序详细信息”页面返回到“子程序”页面时,应用程序崩溃了。没有日志消息。只有我收到这条消息 请帮助,后退按钮工作正常,但上一个tabl

我有一个应用程序具有以下结构

首先,当我单击主页上的一个按钮时,它将打开一个新的UITableView并显示“主程序”列表,当用户单击其中任何一个时,将打开另一个视图控制器并显示所有“子程序”,用户可以选择每个子程序以查看详细信息

在iOS 7版本之前,所有这些都可以正常工作。最近我将设备升级到iOS 8(iPad和iPhone),然后运行相同的代码,当我们从“子程序详细信息”页面返回到“子程序”页面时,应用程序崩溃了。没有日志消息。只有我收到这条消息 请帮助,后退按钮工作正常,但上一个tableview控制器中的某些东西不工作

我试着做仪器,然后我得到了以下信息

然后我试着调试它,但我没有发现任何错误(每个值都是正确的),然后我试着将“tableview Relad data”添加到ViewWillAspect(),然后我得到了这样一个崩溃日志

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UISearchDisplayController numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x124e6e7a0'
*** First throw call stack:
(0x1872ee084 0x1978d40e4 0x1872f5094 0x1872f1e48 0x1871f708c 0x18be51d38 0x18bb49480 0x18bb491f4 0x18bb4fe74 0x18ba6d140 0x18ba8e4c8 0x18ba6ce58 0x18ba6ce58 0x18ba8e4c8 0x18ba6ce58 0x18ba6ce58 0x18ba6ce58 0x18ba6c528 0x18ba6c408 0x18ba77ea4 0x18bc5ab18 0x18ba7e77c 0x18bc5a3a4 0x18bc14278 0x18bb24f40 0x18bb24d0c 0x18bb24c8c 0x18ba6d874 0x18b3c5d58 0x18b3c0944 0x18b3c07e8 0x18b3bffe8 0x18b3bfd6c 0x18ba6f790 0x1872a6324 0x1872a55c8 0x1872a3678 0x1871d1664 0x1903135a4 0x18bad64f8 0x1000a4c80 0x197f42a08)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 
刚才我跑了,然后我把这个记在日志里了

-[UITextFieldLabel numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x12fe79f70
更新:


还有一件事,比如当我继续我的if条件为true时,当我单击back按钮时,它的geting false并为-(NSInteger)tableView:(UITableView*)tableView numberofrowsinssection:(NSInteger)section方法代码在这里,我认为崩溃的原因是当你从细节中单击back按钮时,popViewController被调用两次。导航控制器首先弹出“子程序详细信息”页面,然后立即弹出“子程序”页面。在“Sub-Program”ViewWillAspect方法中,执行一个setupContainer方法,并加载一些FKRSearchBarTableViewController,该控制器具有要填充的表

因此,当导航控制器首次弹出“子程序详细信息”页面时,应用程序转到“子程序”页面的ViewWillDisplay方法,其中执行setupContainer,表格加载数据,同时弹出“子程序”页面。“子程序”被解除锁定,FKrseArchBartableViewController也被解除锁定,他们正忙于加载他们的表视图。这就是为什么消息被发送到解除锁定的对象

您可以将
DAViewController
中的
[self-setupContainer]
行从
视图移动到
viewDidLoad
的末尾,然后删除这些行

if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
    // Navigation button was pressed. Do some stuff
    [self.navigationController popViewControllerAnimated:YES];
}
视图将消失在
THProgramDetailsViewController.m


由于在
backBtnClick
方法中,pop操作已经执行。

是的,我可以看到黄色警告,但弃用会导致任何崩溃??我已经对该警告部分进行了注释,并且我得到了以下崩溃日志,可能是内存问题。下面的日志是什么?还有一件事,比如当我继续我的if条件为true时,当我单击back按钮它的geting false并为-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section方法代码在这里,当你返回时,你的self.tableView似乎发生了变化,什么是self.tableView,您是以编程方式添加它还是将其设置为IBOutlet?除非您直接调用
numberOfSectionsInTableView
,否则该错误意味着您可能将表视图委托/数据源设置错误。您以某种方式绑定了一个
UITextFieldLabel
作为您的
UITableViewDelegate
UITableViewDataSource
您可以查看我的注释以获得第一个答案吗