小编nou*_*tzi的帖子

UITableView 意外地用 beginUpdates()/endUpdates()/performBatchUpdates() 弹起

我这里有一个非常简单的UITableViewController案例NSFetchedResultsController。它来自 Xcode Master-Detail App 示例代码,因此很容易重现。
我有一个 CoreData 模型,其中有 1 个实体和 1 个字符串属性。它显示在一个UITableViewController. 我使用.subtitle系统单元类型。通过选择一行,我只需更新字符串属性。
所以我的问题是,当我添加足够的行供表格视图滚动时(带导航栏的 iPhone 5s 上的 10-11 行),然后向下滚动并选择任何行,表格视图会上下弹跳。
如果行数较少(少于 10 行)或多行(12 行及以上),则行为正常。
所以问题似乎是在滚动视图的极限处发生的。如果我不使用beginUpdates()/ endUpdates(),问题就会消失,但我会失去它们的优势。 这是发生的情况
的视频链接

class TableViewController: UITableViewController, NSFetchedResultsControllerDelegate {

  var managedObjectContext: NSManagedObjectContext? = nil

  @objc func insertNewObject(_ sender: Any) {
    let context = self.fetchedResultsController.managedObjectContext
    let newEvent = Event(context: context)
    newEvent.aString = "a String"
    try? context.save()
  }

  override func viewDidLoad() {
    super.viewDidLoad()

    let addButton = UIBarButtonItem(barButtonSystemItem: .add, …
Run Code Online (Sandbox Code Playgroud)

core-data uitableview nsfetchedresultscontroller ios

5
推荐指数
1
解决办法
971
查看次数