viewDidAppear for UITableViewCell viewDidAppear for UITableViewCell ios ios

viewDidAppear for UITableViewCell


The UITableViewDelegate has these functions:

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

The cell itself does not have callbacks for this.


If you need to respond to changes to the cell's frame and adjust the layout, you need to implement -layoutSubviews in the cell class. Remember to call [super layoutSubviews].


The method viewDidLoad is related to UIViewController and its subclasses, so we cannot use this in UITableViewCell, which is a UIView subclass. The solution I used in one of my app is to override the layoutSubViews method of UITableViewCell, and I delayed the action for some time as below.

- (void)layoutSubViews{     [super layoutSubviews];     [self performSelector:@selector(myMethod) withObject:nil afterDelay:1.0];}