用于UITableViewCell的viewDidAppear

时间:2012-05-27 07:10:34

标签: iphone objective-c ios uitableview viewdidappear

我通常使用viewDidAppear方法在视图完成显示后在视图上执行一些UI工作,并且我在各种情况下使用此方法是非常有用的,但是,我需要在{上进行一些UI更改{1}}完成显示后,SDK中是否有任何可用的方法执行类似UITableViewCell的工作但viewDidAppear

P.S。 UITableViewCell在我的情况下不起作用,如果确实存在,我需要willDisplayCell之类的内容。

4 个答案:

答案 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
}