Iphone UITableViewCell的ViewDid显示

Iphone UITableViewCell的ViewDid显示,iphone,objective-c,ios,uitableview,viewdidappear,Iphone,Objective C,Ios,Uitableview,Viewdidappear,在视图完成显示后,我通常使用viewdideappear方法在视图上执行一些UI操作,我在各种情况下都使用了此方法,因为它非常有用,但是,在视图完成显示后,我需要在UITableViewCell上执行一些UI更改,SDK中是否有任何可用的方法可以执行类似于viewdideappear的工作,但对于UITableViewCell p、 s.willDisplayCell在我的情况下不起作用,如果它真的存在,我需要类似于didDisplayCell的东西。方法viewDidLoad与UIViewCo

在视图完成显示后,我通常使用
viewdideappear
方法在视图上执行一些UI操作,我在各种情况下都使用了此方法,因为它非常有用,但是,在视图完成显示后,我需要在
UITableViewCell
上执行一些UI更改,SDK中是否有任何可用的方法可以执行类似于
viewdideappear
的工作,但对于
UITableViewCell


p、 s.
willDisplayCell
在我的情况下不起作用,如果它真的存在,我需要类似于
didDisplayCell
的东西。

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

- (void)layoutSubViews
{
     [super layoutSubviews];

     [self performSelector:@selector(myMethod) withObject:nil afterDelay:1.0];
}

如果需要响应对单元框架的更改并调整布局,则需要在单元类中实现
-layoutSubviews
。请记住调用
[super layoutSubviews]

UITableViewDelegate具有以下功能:

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

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

单元格本身没有对此的回调

你能通过一些正在使用的代码吗。。你想实现什么,也就是说,用户界面的变化是什么样的变化。。请您再解释一下。请看一下这个问题的答案:当UITableView完成数据请求时,您会得到通知吗?您不能直接在init中为表单元格子类执行操作的原因是什么?为什么
willDisplayCell
不能为您工作?@Mattias-我有一个复杂的情况,无法在这里解释,但简单来说,在创建单元格后,创建视图后,单元格子视图的某些帧会发生更改,因此我需要在单元格出现后修复这些帧。在UI配置中使用延迟?对我来说似乎是可怕的做法不?确实是可怕的做法。对于任何引用此方法的人-方法名称为
layoutSubviews
(注意此情况),并且您还应该调用
[super layoutSubviews]
12对“可怕的做法”注释进行投票,但没有更好的建议?有解决方案吗?我找不到UITableviewCell did view的事件,因此我在延迟0.1后成功地执行了此操作。layoutSubviews的问题是,当单元格退出队列时,始终会调用它。如果第一次设置单元格时只需要更改一次帧,可以在awakeFromNib中进行更改。这样做的问题是,您无法从其中的autolayout(仅在LayoutSubView中)获取调整后的单元格边界。