删除子视图关于如何重置一个UITableView
任何想法?从UITableViewCell中的内容查看(重置的UITableView)
我想在按下按钮时显示一组新数据,并从单元格的contentView
中删除所有子视图,并用一组新子视图刷新它们。我试过[tableView reloadData]
,但数据确实刷新了,但是添加到contentView
之前的子视图仍然存在。
删除子视图关于如何重置一个UITableView
任何想法?从UITableViewCell中的内容查看(重置的UITableView)
我想在按下按钮时显示一组新数据,并从单元格的contentView
中删除所有子视图,并用一组新子视图刷新它们。我试过[tableView reloadData]
,但数据确实刷新了,但是添加到contentView
之前的子视图仍然存在。
然而,当你创建单元格:
#define MY_CUSTOM_TAG 1234
mySubview.tag = MY_CUSTOM_TAG;
[cell.contentView addSubview:mySubview] ;
,后来,当您需要将其删除:
[[cell.contentView viewWithTag:MY_CUSTOM_TAG]removeFromSuperview] ;
我得到了答案:)
if ([cell.contentView subviews]) {
for (UIView *subview in [cell.contentView subviews]) {
[subview removeFromSuperview];
}
}
这段代码将检查单元格的内容观点有任何子视图。
如果有的话,它会在for循环迭代中删除它们!
体面的解决办法... +1 – Rumin 2015-09-10 09:41:15
它只是从上表视图细胞剥离,不是所有的表视图细胞 – 2016-11-15 07:01:17
完美的解决方案! – 2017-11-24 07:45:09
而不是通过所有的子视图迭代的(自己)删除他们,你可以简单地做到这一点,
[[scrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
即通过子视图实际迭代将其删除。 ;) – 2012-02-29 20:47:12
我编辑了我的答案:) – EmptyStack 2013-12-05 07:06:58
如果你想删除所有的UITableViewCell的子视图,你可以我们E本代码:
NSArray* subviews = [cell.contentView subviews];
for (UIView* subview in subviews) {
[subview removeFromSuperview];
}
使用@leftspin的代码
我知道这个问题是旧的,但我发现与解决的问题,如果你从一个原型细胞中删除一个子视图,这种观点会从所有重用的单元中移除,这将在下一个将被重用的单元中创建一个空指针。
如果子类的UITableViewCell并从那里子视图,你必须先做到这一点的验证:
if (mySubView != nil) {
mySubView.removeFromSuperview()
}
这也将你的cellForRow内工作在indexPath方法
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyCustomCell
if (cell.mySubView != nil) {
cell.mySubView.removeFromSuperview()
}
return cell
}
惠特本你避免了空指针,代码是swift 3.希望这有助于某人。 :)
对于雨燕3.1
let theSubviews: Array = (cell?.contentView.subviews)!
for view in theSubviews
{
view.removeFromSuperview()
}
这是一个非常巧妙的解决办法;) – Abolfoooud 2011-09-02 08:03:06
正在申报的最后一个表视图单元格和重装子视图。别人细胞的所有其它子视图不刷新 – 2016-11-15 07:08:39
'cell.contentView.viewWithTag(MY_CUSTOM_TAG)?removeFromSuperview()' – 2017-09-20 07:16:06