我通常在视图完成出现后使用viewDidAppear
方法在视图上做一些 UI 的东西,我在各种情况下都使用了这个方法,它非常有用,但是,我需要在它完成出现后对视图做一些 UI 更改UITableViewCell
,有没有可用的SDK 中的方法做类似的工作,viewDidAppear
但对于UITableViewCell
?
pswillDisplayCell
在我的情况下不起作用,didDisplayCell
如果它确实存在,我需要类似的东西。
我通常在视图完成出现后使用viewDidAppear
方法在视图上做一些 UI 的东西,我在各种情况下都使用了这个方法,它非常有用,但是,我需要在它完成出现后对视图做一些 UI 更改UITableViewCell
,有没有可用的SDK 中的方法做类似的工作,viewDidAppear
但对于UITableViewCell
?
pswillDisplayCell
在我的情况下不起作用,didDisplayCell
如果它确实存在,我需要类似的东西。
具有以下UITableViewDelegate
功能:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath)
单元格本身没有回调。
如果需要响应单元格框架的变化并调整布局,则需要-layoutSubviews
在单元格类中实现。记得打电话[super layoutSubviews]
。
该方法viewDidLoad
与 UIViewController 及其子类有关,因此我们不能在 UITableViewCell 中使用它,它是 UIView 的子类。我在我的一个应用程序中使用的解决方案是覆盖layoutSubViews
UITableViewCell 的方法,并且我将操作延迟了一段时间,如下所示。
- (void)layoutSubViews
{
[super layoutSubviews];
[self performSelector:@selector(myMethod) withObject:nil afterDelay:1.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
}