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];
}