所以我来到了路上这个轻微的撞击声。我创建了一个自定义的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方法两次,并且它保留了我在逻辑中设置的单元格所选的状态。那么为什么这种方式起作用而不仅仅是设置细胞选择状态呢?
答案 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
它将自动选择和取消选择单元格