首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ios swift: Tableview "un"-checkmark单元格

ios swift: Tableview "un"-checkmark单元格
EN

Stack Overflow用户
提问于 2015-03-10 09:38:16
回答 2查看 4K关注 0票数 0

cellForRowAtIndexPath方法中,当我知道有数据可以选中时,我就会这样做:

代码语言:javascript
复制
if (self.selectedLessonObject != nil){
    if(lessons["name"] as String == selectedLessonObject["name"] as String){
        cell.accessoryType = .Checkmark
    }
}

didSelectRowAtIndexPath中,我需要:

代码语言:javascript
复制
// update the checkmark for the current row
let cell = tableView.cellForRowAtIndexPath(indexPath)
cell?.accessoryType = .Checkmark

我还不知道的是,在选择所选的新单元之前,如何先取消对旧单元格的选择?

如何将选定的行保存在cellForRowAtIndexPath中,并在didSelectRowAtIndexPath中访问它以取消选择?

谢谢!!

编辑:

当我尝试这个:

代码语言:javascript
复制
var lastSelectedRow: NSIndexPath? = nil

cellForRowAtIndexPath

代码语言:javascript
复制
if (self.selectedLessonObject != nil){
            if(lessons.objectId == selectedLessonObject.objectId){
                cell.accessoryType = .Checkmark
                lastSelectedRow = tableView.indexPathForSelectedRow()

            }else{
                cell.accessoryType = .None
            }
        }
println("selected: \(lastSelectedRow)")

我得到了零输出。

didSelectRowAtIndexPath中,我想到了这一点:

代码语言:javascript
复制
// Other row is selected - need to deselect it
// catch the previous selected row
var oldcell = tableView.cellForRowAtIndexPath(lastSelectedRow!)
oldcell?.accessoryType = .None

但是我无法从cellForRowAtIndexPath捕获当前行到didSelectRowAtIndexPath

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-10 09:51:50

如果在didSelectRowAtIndexPath中选择了新行,请检查新属性是否为nill,如果是,则通过调用获取单元格

代码语言:javascript
复制
if let last = lastSelectedRow {
    let oldSelectedCell = tableView.cellForRowAtIndexPath(last)
    oldSelectedCell.accessoryType = .None
}
lastSelectedRow = indexPath
let cell = tableView.cellForRowAtIndexPath(indexPath)
cell.accessoryType = .Checkmark

cellForRowAtIndexPath中,如果新属性不是nill,并且是相等的,则检查indexPath和复选标记,否则取消选中:

代码语言:javascript
复制
if let last = lastSelectedRow {
    if (self.selectedLessonObject != nil){
        if(lessons.objectId == selectedLessonObject.objectId && last == indexPath){
            cell.accessoryType = .Checkmark

        }else{
            cell.accessoryType = .None
        }
    } else{
        cell.accessoryType = .None
    }
} else{
    if (self.selectedLessonObject != nil){
        if(lessons.objectId == selectedLessonObject.objectId){
            cell.accessoryType = .Checkmark
            lastSelectedRow = indexPath

        }else{
            cell.accessoryType = .None
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2015-03-10 09:46:17

可以保存选定单元格的indexPath或行。或者你可以试着从:

代码语言:javascript
复制
tableview.indexPathForSelectedRow()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28960263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档