在tableview单元格上调用setSelected时,为什么我的选定状态未被保留?

时间:2015-09-29 18:08:29

标签: ios iphone uitableview tableviewcell

所以我来到了路上这个轻微的撞击声。我创建了一个自定义的tableview单元格,在tableviw单元格类中我重写了[tableViewCell setSelected:TRUE animated:FALSE]。在我的cellForRowAtIndexPath方法中,我检查一些逻辑,如果逻辑是真的,那么使用[tableViewCell setSelected:TRUE animated:FALSE]; All将单元格设置为所有如果正常和花花公子,直到我意识到这一点。在我明确调用[tableviewCell setSelected]之后,系统隐式调用setSelected。当系统调用它时,当我明确地将其设置为true时,我的选择状态被设置为false。我知道它是相同的tableview单元格,因为我使用self检查其内存位置。我找到了解决这个问题的答案,但是为什么会发生这种情况真的没有意义。如果我调用[tableView selectRowAtIndexPath:indexPath animated:FALSE scrollPosition:UITableViewScrollPositionNone];,则不会调用setSelected方法两次,并且它保留了我在逻辑中设置的单元格所选的状态。那么为什么这种方式起作用而不仅仅是设置细胞选择状态呢?

1 个答案:

答案 0 :(得分:0)

您可以从选择委托方法中设置选定状态

Private Sub CommandButton1_Click()

Dim myValue As String, s As String, r As Long

myEmp = InputBox("Search for an employee by last name")
ActiveSheet.Range("B2").Value = myEmp 'better to specify sheet
r = 5

Dim lastrow As Long
lastrow = Worksheets("Employee Reports").Range("A" & Rows.Count).End(xlUp).Row 'don't hard-code the row number

With Sheet7 'would be better to stick to all names or all code names rather than mixing
    Dim rw As Range
    Set rw = .Range("B:B").Find(What:=myEmp, After:=.Range("B1"), LookIn:=xlFormulas, _
                                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                MatchCase:=False, SearchFormat:=False)
    If Not rw Is Nothing Then
        s = rw.Address
        Do
            rw.EntireRow.Copy Worksheets("Employee Reports").Cells(r, 1)
            r = r + 1
            Set rw = .Range("B:B").FindNext(rw)
        Loop Until rw.Address = s
    Else
        MsgBox myEmp & "Employee Not Found"
    End If
End With

End Sub

它将自动选择和取消选择单元格