У меня есть пользовательский подкласс UIView, который я пытаюсь использовать в качестве заголовка для одного из моих сгруппированных разделов табличного представления. Я сохраняю экземпляр этого представления в tableViewController и использую его для возврата высоты раздела заголовка, а также самого представления. проблема заключается в том, что эта переменная экземпляра каким-то образом изменяется с UIView на CALayer в середине вызова reloadData, что вызывает сбой, поскольку экземпляр имеет специальный метод для возврата ожидаемой высоты. это код, который вылетает:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
{
return [self.dataHeader frameHeight];
}
return 0.0f;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == 0)
{
return self.dataHeader;
}
return nil;
}
Я установил точку останова при первом возврате в блоке if метода heightForHeaderInSection, и он достиг ее 4 раза; первые три возвращают dataHeader успешно, в то время как четвертый раз показывает, что он является CALayer, и вылетает с исключением с помощью doNotRecognizeSelector (мое табличное представление имеет 2 раздела, если это имеет значение). Есть ли причина, по которой это происходит, и есть ли способ остановить это?