UITableViewcontroller のセクションのカスタム ヘッダーを作成しました。NFR を使用してデータを取得しています。セクションの行には、削除するオプションがあります。ユーザーがデータを削除すると、NFR はデータを更新し、リストから行を削除します。ただし、カスタム ヘッダーも削除されています。
以下はコードベースです
オーバーライド func tableView(tableView: UITableView, viewForHeaderInSection セクション: Int) -> UIView?{
let headerCell = tableView.dequeueReusableCellWithIdentifier("headerCell") as? PendingPaymentHeaderCell
if let cell = headerCell {
cell.label1.text = "test"
cell.timeLabel.text = "test"
}
return headerCell
}
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 60.00
}
override func tableView(tableView: UITableView, willDisplayHeaderView ビュー: UIView, forSection セクション: Int) { true }
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "pendingPaymentTableViewCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! PendingPaymentCell
configureCell(cell, atIndexPath: indexPath)
return cell
}
// MARK: - FetchedResultsController Delegate
func controllerWillChangeContent(controller: NSFetchedResultsController) {
tableView.beginUpdates()
}
func controllerDidChangeContent(controller: NSFetchedResultsController) {
tableView.endUpdates()
}
func controller(
controller: NSFetchedResultsController,
didChangeSection sectionInfo: NSFetchedResultsSectionInfo,
atIndex sectionIndex: Int,
forChangeType type: NSFetchedResultsChangeType) {
print("change type is \(type.rawValue)")
let sectionIndexSet = NSIndexSet(index: sectionIndex)
switch type {
case .Insert:
print("insert")
self.tableView.insertSections(sectionIndexSet, withRowAnimation: UITableViewRowAnimation.Fade)
break
case .Delete:
print("delete")
self.tableView.deleteSections(sectionIndexSet, withRowAnimation: UITableViewRowAnimation.Fade)
break
case .Move :
break
case .Update :
break
}
}
func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
switch (type) {
case .Insert:
if let indexPath = newIndexPath {
tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
break;
case .Delete:
if let indexPath = indexPath {
print("deleting \(indexPath)")
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
break;
case .Update:
if let indexPath = indexPath {
let cell = tableView.cellForRowAtIndexPath(indexPath) as! PendingPaymentCell
configureCell(cell, atIndexPath: indexPath)
}
break;
case .Move:
if let indexPath = indexPath {
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
if let newIndexPath = newIndexPath {
tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Fade)
}
break;
}
}
これに関するヘルプは大歓迎です。
よろしく、 センディル