Ios UITableViewController';s单元';内容消失

Ios UITableViewController';s单元';内容消失,ios,uitableview,controller,uilabel,Ios,Uitableview,Controller,Uilabel,我正在制作一个硬币收集应用程序,它应该可以帮助用户维护他们收集硬币的便携式记录。到目前为止,有两个视图控制器:CoinTableViewController,它显示所有硬币类别的表视图;以及cointegoryviewcontroller,它应该具有该类别中特定硬币的表视图 很明显,我希望我的硬币能够基于多种标准(例如同一年、同一国家等)进行报告。为此,我创建了一个可重用的tableview单元格子类,名为CoinTableViewCell,它有5个UILabel,表示集合中的硬币可以按类别分组

我正在制作一个硬币收集应用程序,它应该可以帮助用户维护他们收集硬币的便携式记录。到目前为止,有两个视图控制器:
CoinTableViewController
,它显示所有硬币类别的表视图;以及
cointegoryviewcontroller
,它应该具有该类别中特定硬币的表视图

很明显,我希望我的硬币能够基于多种标准(例如同一年、同一国家等)进行报告。为此,我创建了一个可重用的tableview单元格子类,名为
CoinTableViewCell
,它有5个UILabel,表示集合中的硬币可以按类别分组的所有信息

这是我的故事板的样子

逻辑是基于我当前的分类标准,我可以在单元格中隐藏某些标签,以反映硬币分类的标准。“设置”控制盘打开屏幕左侧的菜单,其中包含如何对硬币进行排序的选项,如果排序选项已更改,则关闭菜单将使硬币类别控制器在集合中对硬币进行排序

我的问题是,虽然我的程序整体运行,但有时,在程序调用某些单元格后(在用户打开菜单并选择一个选项后),某些单元格不会完全显示

下面是它的样子:

如您所见,视图控制器中底部的两个单元格缺少顶部标签,即使其他单元格也有。由于我已经实现了tableview控制器的单元格可以调整大小,所以tableview单元格应该自动调整大小以适应其中的内容

这是我的密码:

//控制显示普通硬币的表视图控制器(每个类别一个)
导入UIKit
导入CoreData
类CoinTableViewController:UITableViewController、NSFetchedResultsControllerDelegate、UISearchResultsUpdated、UITableControllerDelegate
{
//这是收藏中所有硬币的阵列
//此二维数组的每一行表示一个新类别
var coinsByCategory:[coinscategorymo]=[]
var fetchResultController:NSFetchedResultsController!
//我们按类别对硬币进行排序,然后在视图控制器中显示它们
//示例包括[[伊拉克第纳尔1943,伊拉克第纳尔1200]等]
//
//此处的数据用于将硬币重新划分为各自的类别
//默认的分类标准是将硬币分类为具有相同国家、价值和货币的类别
//用户可以通过打开ConfiguringPopoverViewController并在其中更改排序标准来更改应用程序的排序标准
private var是当前在OneWCategories中排序的coins:Bool=false
重写func viewDidLoad()
{
super.viewDidLoad()
self.tabbar控制器?.delegate=self
//我们现在获取数据
let fetchRequest:NSFetchRequest=cointegorymo.fetchRequest()
如果让appDelegate=(UIApplication.shared.delegate为?appDelegate)
{
让上下文=appDelegate.persistentContainer.viewContext
让sortDescriptor=NSSortDescriptor(键:“索引”,升序:true)
fetchRequest.sortDescriptors=[sortDescriptor]
fetchResultController=NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:context,sectionNameKeyPath:nil,cacheName:nil)
fetchResultController.delegate=self
做
{
请尝试fetchResultController.performFetch()
如果让fetchedObjects=fetchResultController.fetchedObjects
{
self.coinsByCategory=获取的对象
}
}
抓住
{
打印(错误)
}
}
//如果表视图中有空区域,而不是显示
//空单元格,我们显示一个空白区域
self.tableView.tableFooterView=UIView()
//我们为表格视图配置行高度,以便单元格可以调整大小。
//另外:用户是否要在“常规”->“可访问性”中调整文本大小
//应用程序中的文本大小将为他自动调整。。。
tableView.estimatedRowHeight=120
tableView.rowHeight=UITableViewAutomaticDimension
//我们配置搜索栏和导航栏。。。。
//如果用户向上滚动,他会看到白色背景,而不是灰色背景
tableView.backgroundView=UIView()
}
重写func numberOfSections(在tableView:UITableView中)->Int{
返回fetchResultController.sections!.count
}
重写func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int
{
如果searchController!=nil&&searchController.isActive
{
返回searchResults.count
}
其他的
{
如果let sections=fetchResultController?.sections
{
返回节[section]。numberOfObjects
}
其他的
{
返回0
}
}
}
重写func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
//配置单元格
让cellIdentifier=“Cell”
让cell=tableView.dequeueReusableCell(带标识符:cellIdentifier,for:indexPath)作为!CoinTableViewCell
//初始化单元格
让category=(searchController!=nil&&searchController.isActive)?searchResults[indexPath.row]:coinsByCategory[indexPath.row]
//现在,我们删除不需要的额外标签
cell.configureLabelsForCategoryType(类型:(category.coinCategory?.currentCategoryType)!)
让sampleCoin:Coin=category.coinCategory!.getCoin(at:0)!
cell.countryLabel.text=“国家:\(sampleCoin.getCountry())”
cell.valueAndDenominationLabel.text=“Value&Denom.:\(sampleCoin.valueAndDenomination)”
//现在