1

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;
    }
}

これに関するヘルプは大歓迎です。

よろしく、 センディル

4

0 に答える 0