ios - 从自定义 UITableViewCell 添加和删除自定义 View

标签 ios objective-c uitableview uiview

我创建了一个自定义的 UITableViewCellWTNCurrentLocationSearchResultCellTableViewCell

我们将来自 API 的数据解析为数组。然后在 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 中,我们检查数组是否不为 nil,然后像这样填充数据:

WTNCurrentLocationSearchResultCellTableViewCell *searchResultCell = [tableView dequeueReusableCellWithIdentifier:searchResultCellName];
if (searchResultCell == nil) {
        searchResultCell = [[WTNCurrentLocationSearchResultCellTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:searchResultCellName];
}
WTNAPIBusiness *business = self.apiBusinesses[indexPath.row];
searchResultCell.distanceLabel.text = [NSString stringWithFormat:@"%d %@",(int)[business.distanceFromLocation integerValue], @"meters"];

问题
我们有一个用于评级的 subview 。如果您滚动到表格底部并快速返回顶部,最后的评级 View 将显示在顶部单元格中。

我想正在发生的事情是,根据 dequeueResuable... 正在“重用”单元格。

所以问题是,我是否应该清理 cellForRowAtIndex 开头的单元格对象/ socket ? 更重要的是,如果我们有一个只有在有特定值时才会显示的 View ,否则我们应该在这里做什么? IE。如果没有评级或 0 我们不想显示评级 View 。但是,通过从 superview 中删除评分 View ,这意味着它以后将永远不会存在于单元格上吗?

注意:这些是在 IB 中创建的自定义单元格,其对象/ socket 链接到自定义 UITableViewCell 类。该类没有自定义初始化方法,它仅用于引用 socket 。

最佳答案

通常,您希望避免在重用期间更改单元格的结构。使用一组静态 View 设置每种类型的单元格。然后根据数据根据需要显示/隐藏 View 。

关键是您要在 tableView:cellForRowAtIndexPath: 方法中完全配置单元格。如果给定 View 不包含数据,请将内容设置为空或隐藏 View 。不要假设单元格一开始是空白的。它不会。

不要将 View 设置为零。不要将 (string) 内容设置为 nil。相反,要么将字符串内容设置为空字符串:@"",要么将 View 设置为 hidden=YES

如果上面 Hao 概述的代码不起作用,则说明有问题。

听起来你很困惑。我建议保持简单,不要使用 prepareForReuse 或 didEndDisplayingCell。在 tableView:cellForRowAtIndexPath: 方法中完成所有工作。

关于ios - 从自定义 UITableViewCell 添加和删除自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23657931/

相关文章:

ios - UITabBar 最佳实践

objective-c - 如何在没有 namespace 的 Objective-C 中划分类?

ios - UITableView 未显示正确的行数

ios - 在 ios uitableview 中间歇性地获取 json 提要失败

ios - 无法填充第二个 UITableView Controller

ios - 在均匀分布的 UIBezierPath 上移动多个 UIImage

objective-c - 从应用程序委托(delegate)在应用程序窗口上添加标签

ios - 子类未找到父类(super class)接口(interface)的 Objective-c 错误

objective-c - NSURLSession 和凭据身份验证

ios - 无法在 tableview 中为我的自定义原型(prototype)单元格提供不同的高度