插入TableView时,自定义单元格为空白。关闭并重新打开应用时,该字段不为空

时间:2016-07-21 22:45:05

标签: ios swift uitableview core-data

我是iOS开发新手,我正在创建我的第一个应用程序,很抱歉,如果问题非常糟糕。我在Xcode中使用Master / Detail模板并使用Core Data。我更改了模板以在tableView中使用自定义单元格样式。当用户想要添加某些内容时,他们会切换到另一个视图以完成表单。当用户单击“保存”时,表单数据将保存到Core Data,然后视图将返回到MasterView。

我的问题是,当表单保存时,tableView会更新以显示新单元格,但它间歇性地为空tableView。有时这会发生,有时则不会发生。单元格保持空白,直到应用程序从应用程序切换器关闭并重新打开。

有什么我忘记改变的吗?谢谢你的帮助。

以下是我在模板中更改的用于添加自定义单元格样式的函数:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomTableViewCell
    let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as! NSManagedObject
    self.configureCell(cell, withObject: object)
    return cell
}

func configureCell(cell: CustomTableViewCell, withObject object: NSManagedObject) {

    let imageData: NSData = object.valueForKey("image") as! NSData
    let picture: UIImage = UIImage(data: imageData)!
    let date: NSDate
    let dateFormatter = NSDateFormatter()
    dateFormatter.locale = NSLocale.currentLocale()


    cell.cellImage.image = picture
    cell.locationNameLabel!.text = object.valueForKey("name")!.description
    cell.categoryLabel!.text = object.valueForKey("category")!.description

    date = object.valueForKey("date")! as! NSDate

    dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle
    cell.dateLabel!.text = dateFormatter.stringFromDate(date)


}

这是我为FetchedResultsController

更改的唯一功能
func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
    switch type {
    case .Insert:
        tableView.insertRowsAtIndexPaths([newIndexPath!], withRowAnimation: .Fade)
    case .Delete:
        tableView.deleteRowsAtIndexPaths([indexPath!], withRowAnimation: .Fade)
    case .Update:
        self.configureCell(tableView.cellForRowAtIndexPath(indexPath!)! as! CustomTableViewCell, withObject: anObject as! NSManagedObject)
    case .Move:
        tableView.moveRowAtIndexPath(indexPath!, toIndexPath: newIndexPath!)
    }
}

2 个答案:

答案 0 :(得分:0)

我认为您可能需要在添加单元格之后重新加载数据,并且当您将segue返回到表格视图时。您可以使用self.tableView.reloadData()重新加载整个表格,或self.tableView.reloadRowsAtIndexPaths(paths, withRowAnimation: UITableViewRowAnimation.None)重新加载特定单元格。 我希望这会有所帮助:)

答案 1 :(得分:0)