我有一个带有原型表格单元格的UITableView,我有一个UILmageView UILabel和2个Buttons对象,它们从具有不同标签的单元格(即100,200,300)上继承UIButton,我使用IB创建了这个。我使用dequeueReusableCellWithIdentifier来获取cellForRowAtIndexPath中的单元格,它总是返回一个单元格。
第一次运行cellForRowAtIndex路径[cell viewWithTag:TAG]为每个UI元素返回正确的对象,但是在第二次运行时(当我滚动一点时)所有对象都被正确返回,除了两个UIButton对象是nil 。 (在调试器中,它们的地址全为零)。
我不知道会导致这种情况,因为我的所有其他表视图都使用类似的代码。
更新:如果我在cellForRow中为Buttons创建类型id,它们不是nil,但是当我悬停时,对象显示为(UIButton *)。但是,如果我在[cell ViewWithTag:Button1Tag]之后有任何代码向id对象发送消息,那么它将变为零。非常奇怪。
答案 0 :(得分:0)
好的,我最终在XCode中使用GDB(这很棒)使用recursiveDescription查看Cell内部。它显示我的标签已经消失,然后我意识到我正在设置cellForRow上的标签来保存行,覆盖原始的IB集标签。