web-dev-qa-db-ja.com

UITableViewCellのviewDidAppear

私は通常viewDidAppearメソッドを使用して、ビューが表示された後にUIに関するいくつかのことを行い、このメソッドをさまざまな状況で使用しましたが、非常に便利でしたが、UITableViewCellが表示された後、viewDidAppearのようにUITableViewCellに対して同様の処理を行うSDKで使用可能なメソッドはありますか?

pS私の場合、willDisplayCellは機能しませんでした。実際に存在する場合は、didDisplayCellのようなものが必要です。

31
JAHelia

UITableViewDelegateには次の機能があります。

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

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

セル自体には、このためのコールバックはありません。

30
neoneye

セルのフレームの変更に応答してレイアウトを調整する必要がある場合は、セルクラスに-layoutSubviewsを実装する必要があります。 [super layoutSubviews]を呼び出すことを忘れないでください。

11
Mike Weller

メソッドviewDidLoadはUIViewControllerとそのサブクラスに関連しているため、UIViewサブクラスであるUITableViewCellではこれを使用できません。私のアプリの1つで使用した解決策は、UITableViewCellのlayoutSubViewsメソッドをオーバーライドすることで、以下のようにアクションをしばらく遅延させました。

- (void)layoutSubViews
{
     [super layoutSubviews];

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