I usually use viewDidAppear
method to do some UI stuff on the view after it finished appearing and I used this method in various situations were it was very useful,
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];
}