iOS Swift:deleteRowsAtIndexPaths 崩溃 [重复]

Posted

技术标签:

【中文标题】iOS Swift:deleteRowsAtIndexPaths 崩溃 [重复]【英文标题】:iOS Swift: Crash on deleteRowsAtIndexPaths [duplicate] 【发布时间】:2015-03-01 23:49:21 【问题描述】:

当我从 tableView 中删除一行时,我遇到了崩溃。不知道发生了什么。这是我的代码:

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) 
        let items = days[indexPath.row]
        self.removeItems(items, indexPath: indexPath)
    

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return days.count

删除项目

func removeItems(items: [CKRecord], indexPath: NSIndexPath) 

    for item in items 
        db.deleteRecordWithID(item.recordID)  (record, error) -> Void in
            if error != nil 
                println(error.localizedDescription)
            

            dispatch_async(dispatch_get_main_queue())  () -> Void in
                if let index = find(exercises, item) 
                    exercises.removeAtIndex(index)
                
            
        
    

    days.removeAtIndex(indexPath.row)
    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)

【问题讨论】:

你能显示 numberOfRowsInSection 和 numberOfSections 方法吗? 只有一节。刚刚添加了行数方法。 将 deleteRowsAtIndexPaths 替换为 reloadData。并记录天数。看看发生了什么。 可行,但不会删除带有动画的行。 【参考方案1】:

在删除(或添加)单元格之前,您需要在相关的 tableView 上调用beginUpdates()。然后删除或添加单元格。完成后,致电endUpdates()。 一旦您致电endUpdates()。请记住,一旦您调用endUpdates(),您的 tableView 模型必须与您删除或添加的部分和行数一致。 开始和结束更新允许用户界面为所有单元格更改呈现连贯的独特动画。

tableView.beginUpdates()
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
tableView.endUpdates()

【讨论】:

以上是关于iOS Swift:deleteRowsAtIndexPaths 崩溃 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发中OC和swift的对比

ios OC、swift混编制作framework

iOS-swift-基础篇1

iOS开发系列--Swift 3.0

swift 2016年 - iOS / PlayerViewController.swift

swift iOS URL Schemes Swift