iOS UITableViewCell 发布子视图

Posted

技术标签:

【中文标题】iOS UITableViewCell 发布子视图【英文标题】:iOS UITableViewCell releasing subviews 【发布时间】:2014-06-05 09:26:19 【问题描述】:

我注意到UITableViewCell 没有重复使用它的子视图,并且似乎在向上和向下滚动时被释放。我正在创建UITableViewCell 子视图并在viewDidAppear 上对其进行动画处理。我只想这样做一次,然后我希望子视图永远留在 ContentView 中,直到视图消失。因此,我已经按照我认为正确的方式进行了操作,但不确定出了什么问题;有人可以帮忙吗?

UINib *nib1 = [UINib nibWithNibName:@"CustomCell" bundle:nil];
[self.tableView registerNib:nib1 forCellReuseIdentifier:@"CustomCell"];

@interface CustomCell : UITableViewCell

@property (nonatomic) IBOutlet UILabel *title;
@property (nonatomic) CustomeView *customeView;

@end

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

      static NSString cellIdentifier = @"CustomCell";
      CustomCell *customCell = [tableView dequeueReusableCellWithIdentifier:accountCellIdentifier forIndexPath:indexPath];

    ......

    customCell.customeView = (CustomeView*)[customCell.contentView viewWithTag:101];

   if(!customCell.customeView) 
      customCell.customeView = [CustomeView new];
      //configure customview...                                  
      customCell.customeView.tag = 101;
      [customCell.contentView addSubview:customCell.customeView];
   

   return cell;

【问题讨论】:

accountsListBaseCell 是什么? 已编辑。这是实际的单元格名称..我正在尝试创建示例。 上下滚动时怎么知道它的子视图被释放了?我发现你在创建customeView的框架时没有设置它。 我正在设置它的框架和其他配置,并在 viewDidAppear 上对其进行动画处理。当我上下滚动 if(!customCell.customeView) 条件变为真时,情况不应该如此。 我没有发现你的代码有什么问题,但我认为有一些冗余代码。 customCell.customeView = (CustomeView*)[customCell.contentView viewWithTag:101];这行可以省略。 【参考方案1】:

尝试将您的属性类型更改为强:

@property (strong, nonatomic) CustomeView *customeView;

【讨论】:

默认使用strong属性。 这也不起作用,因为默认情况下 KudoCC 指向的属性很强大。 @AppleDeveloper:你为什么使用 customeView 作为属性?为什么不为每个单元以编程方式初始化它?还是直接用IB添加?

以上是关于iOS UITableViewCell 发布子视图的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8:UITableViewCell.contentView 不会调整其中的子视图大小

UITableViewCell 子视图在 iOS7 中只返回 UITableViewCellScrollView

iOS UITableViewCell点击时子视图背景透明的解决方法

添加 UITextField 作为 UITableViewCell 的子视图在 IOS 6 中工作正常,但在 IOS 7 中它不起作用?

如何获取uibutton(UITableViewCell的子视图)相对于整个窗口iOS Objective-C的位置?

UITableViewCell 选择样式更改所有子视图的背景颜色