ios - 查看标签 : returns nil on UITableViewCell only first time

标签 ios objective-c uitableview

当 UITableViewCell 第一次通过 dequeueReusableCellWithIdentifier: 从 Storyboard 加载时:viewWithTag: 返回 nil 对象。但在第二次和下一次重新加载时,它会返回正确的对象。

我的 tableView 嵌入到带有原型(prototype)单元的 UIViewController(在 Storyboard 中)

cellAttachment = [_tableView dequeueReusableCellWithIdentifier:@"cellAttachment"];
UIButton *btnAttachment = nil;
btnAttachment = (UIButton*)[cellAttachment viewWithTag:10];

cellAttachment 第一次加载时,btnAttachment 为 nil。 下次重新加载时 btnAttachment 会正确返回。

Cell View 层次结构首次加载

(lldb) po [cellAttachment recursiveDescription]
<UITableViewCell: 0x7fd3e611cc20; frame = (0 0; 0 0); layer = <CALayer: 0x7fd3e611be00>>
   | <UITableViewCellContentView: 0x7fd3e3fc9850; frame = (0 0; 0 0); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x7fd3e611b6a0>; layer = <CALayer: 0x7fd3e611bd00>>
   | <_UITableViewCellSeparatorView: 0x7fd3e611cf20; frame = (0 -1; 15 1); layer = <CALayer: 0x7fd3e611c020>>

下次重新加载时的单元格 View 层次结构

    (lldb) po [cellAttachment recursiveDescription]
    <UITableViewCell: 0x7fd3e611cc20; frame = (0 179; 320 42); hidden = YES; autoresize = W; layer = <CALayer: 0x7fd3e611be00>>
       | <UITableViewCellContentView: 0x7fd3e3fc9850; frame = (0 0; 320 42); opaque = NO; gestureRecognizers = <NSArray: 0x7fd3e611b6a0>; layer = <CALayer: 0x7fd3e611bd00>>
       |    | <UIButton: 0x7fd3e611d0f0; frame = (286 6; 15 22); opaque = NO; autoresize = RM+BM; tag = 10; layer = <CALayer: 0x7fd3e611c0b0>>
       |    |    | <UIImageView: 0x7fd3e6015410; frame = (0.5 1; 14 20); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7fd3e3ccd960>>
       | <_UITableViewCellSeparatorView: 0x7fd3e611cf20; frame = (0 -1; 15 1); layer = <CALayer: 0x7fd3e611c020>>

   | <UIView: 0x7fd3e3c4c140; frame = (15 41; 305 1); layer = <CALayer: 0x7fd3e3cecb40>>

最佳答案

遇到问题后,我将旧的工作文件与新的 Storyboard 文件进行了比较,以了解可能导致此类行为的原因。这样做之后,我能够通过以下方式之一解决我的问题。

1:在 UITableViewCell 的每个 subview 上启用“已安装”字段

enter image description here

2:在 .storyboard 文件上禁用“使用大小类”

enter image description here

关于ios - 查看标签 : returns nil on UITableViewCell only first time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344106/

相关文章:

ios - UIPageViewController NSInternalInconsistencyException

ios - UITableView 最后一行被截断

iphone - 使用 APParallaxHeader 显示图像时出现问题

ios - 关闭 FSCalendar 中过去的日期

ios - 可调整大小的 iPhone 模拟器不起作用

ios - 删除第一个注释-MapView iOS

ios - 如何在 NSUserdefaults 中保存 NSMutablearray

ios - 越狱设备上的正常iOS开发

ios - 错误 : registering a custom tableView cell in swift with an xib file

ios - swift 3 : Property observer for singleton