ViewDidAppear для UITableViewCell

Обычно я использую метод viewDidAppear для создания некоторых элементов пользовательского интерфейса в представлении после его появления, и я использовал этот метод в различных ситуациях, потому что это было очень полезно, однако мне нужно сделать некоторые изменения пользовательского интерфейса на UITableViewCell после того, как он закончил появляться, есть ли какой-либо доступный метод в SDK, который выполняет аналогичную работу, например viewDidAppear, но для UITableViewCell?

p.s. willDisplayCell не работал в моем случае, мне нужно что-то вроде didDisplayCell, если оно действительно существует.

Ответ 1

UITableViewDelegate выполняет следующие функции:

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

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

Сама ячейка не имеет обратных вызовов для этого.

Ответ 2

Если вам нужно отреагировать на изменения в кадре ячейки и настроить макет, вам необходимо реализовать -layoutSubviews в классе ячеек. Не забудьте вызвать [super layoutSubviews].

Ответ 3

Метод viewDidLoad связан с UIViewController и его подклассами, поэтому мы не можем использовать его в UITableViewCell, который является подклассом UIView. Решение, которое я использовал в одном из моих приложений, заключается в переопределении метода layoutSubViews UITableViewCell, и я отложил действие в течение некоторого времени, как показано ниже.

- (void)layoutSubViews
{
     [super layoutSubviews];

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