Итак, кажется, что heightForRowAtIndexPath
вызывается до cellForRowAtIndexPath
. В настоящее время я использую cellForRowAtIndexPath
для вычисления высоты каждой ячейки (они являются переменной высотой, используя UILabel
с различным количеством текста в ней.
Я озадачен тем, как правильно настроить высоту ячейки, если метод, который устанавливает высоту, вызывается перед тем способом, который вычисляет.
Я создал категорию NSString
, а другой из UILabel
, которые работают вместе, делают UILabel
правильным. Проблема заключается в том, что экземпляры UITableViewCell
, содержащие эти метки, не изменяются, поэтому надписи наклеиваются на конце каждой метки, перекрывая их внизу.
Я знаю, что мне нужно сделать, чтобы высота ячейки равнялась высоте метки, плюс некоторое дополнительное пространство в поле, но я озадачен тем, как я могу установить высоту до того, как высота метки была рассчитывается. Могу ли я установить высоту кого-то, не используя heightForRowAtIndexPath
? Или, если нет, могу ли я вычислить высоту ячейки в другом месте? В настоящее время я использую indexPath.row
, чтобы это произошло, поэтому делать это заранее было бы сложно. Здесь код my cellForRowAtIndexPath:
cellForRowAtIndexPath
- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath
{
FQCustomCell *_customCell = [tableView dequeueReusableCellWithIdentifier: @"CustomCell"];
if (_customCell == nil) {
_customCell = [[FQCustomCell alloc] initWithStyle: UITableViewCellStyleValue1 reuseIdentifier: @"CustomCell"];
}
_customCell.myLabel.text = [[_loadedNames objectAtIndex: indexPath.row] name];
_customCell.myLabel.font = [UIFont fontWithName: @"FontA" size: 15.0f];
UIView *backView = [[UIView alloc] initWithFrame: CGRectZero];
backView.backgroundColor = [UIColor clearColor];
_customCell.backgroundView = backView;
_customCell.myLabel.frame = CGRectMake(5, 5, 265, 65);
[_customCell.myLabel sizeToFitMultipleLines];
return _customCell;
}