37

我通常在视图完成出现后使用viewDidAppear方法在视图上做一些 UI 的东西,我在各种情况下都使用了这个方法,它非常有用,但是,我需要在它完成出现后对视图做一些 UI 更改UITableViewCell,有没有可用的SDK 中的方法做类似的工作,viewDidAppear但对于UITableViewCell?

pswillDisplayCell在我的情况下不起作用,didDisplayCell如果它确实存在,我需要类似的东西。

4

4 回答 4

38

具有以下UITableViewDelegate功能:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath)

单元格本身没有回调。

于 2016-05-07T10:52:31.090 回答
12

如果需要响应单元格框架的变化并调整布局,则需要-layoutSubviews在单元格类中实现。记得打电话[super layoutSubviews]

于 2012-07-27T12:01:37.623 回答
3

该方法viewDidLoad与 UIViewController 及其子类有关,因此我们不能在 UITableViewCell 中使用它,它是 UIView 的子类。我在我的一个应用程序中使用的解决方案是覆盖layoutSubViewsUITableViewCell 的方法,并且我将操作延迟了一段时间,如下所示。

- (void)layoutSubViews
{
     [super layoutSubviews];

     [self performSelector:@selector(myMethod) withObject:nil afterDelay:1.0];
}
于 2012-05-27T09:07:38.093 回答
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
}
于 2021-06-23T10:03:58.053 回答