我通常使用viewDidAppear
方法在视图完成显示后在视图上执行一些UI工作,并且我在各种情况下使用此方法是非常有用的,但是,我需要在{上进行一些UI更改{1}}完成显示后,SDK中是否有任何可用的方法执行类似UITableViewCell
的工作但viewDidAppear
?
P.S。 UITableViewCell
在我的情况下不起作用,如果确实存在,我需要willDisplayCell
之类的内容。
答案 0 :(得分:29)
UITableViewDelegate
具有以下功能:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath)
单元格本身没有回调。
答案 1 :(得分:10)
如果您需要响应单元框架的更改并调整布局,则需要在单元类中实现-layoutSubviews
。请记得致电[super layoutSubviews]
。
答案 2 :(得分:2)
方法viewDidLoad
与UIViewController及其子类有关,因此我们不能在UITableViewCell中使用它,这是一个UIView子类。我在我的一个应用程序中使用的解决方案是覆盖UITableViewCell的layoutSubViews
方法,我将操作延迟了一段时间,如下所示。
- (void)layoutSubViews
{
[super layoutSubviews];
[self performSelector:@selector(myMethod) withObject:nil afterDelay:1.0];
}
答案 3 :(得分:0)
您可以使用 didMoveToSuperview
并在那里进行单元格更新
override func didMoveToSuperview() {
super.didMoveToSuperview()
if superview != nil {
// Update the cell
}
}
如果您需要更快的速度,请使用 willDisplayCell
func tableView(_ tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
// Update the cell
}