проблема с корректной регулировкой высоты uitableview - PullRequest
0 голосов
/ 07 декабря 2009

Я работаю над проектом, который имеет uitableview с 3 строками в 1 разделе. Теперь я хотел бы, чтобы 1 из этих трех ячеек были динамическими по высоте. Во-первых, я даже не знаю, возможно ли это. Если это так, то я хочу сделать это! Я нашел очень полезное руководство, помогающее мне пройти через него, здесь . Я реализовал файлы StringHelper, которые он рекомендовал, и они отлично работают для одной ячейки, но когда есть несколько ячеек, у меня начинаются проблемы. Эта картинка иллюстрирует, что происходит, когда я сохраняю текст: alt text http://www.freeimagehosting.net/uploads/e7351da3ea.png

И, как вы можете видеть по любой причине, случайным образом вставляет симпатичный маленький арабский символ в начале.

Итак, вот код, с которым я работаю:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{  
NSString *label = [entree.notes/*putting entree.notes here may or may not be correct*/ length]  == 0 ? kDefaultNoteLabel : aNote;
CGFloat height = [label RAD_textHeightForSystemFontOfSize:kTextViewFontSize] + 40.0;
return height;
}  


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease];
 cell.editingAccessoryType = UITableViewCellAccessoryDisclosureIndicator;
  }
aNote = entree.notes; 
NSString *label = [aNote length] == 0 ? kDefaultNoteLabel : aNote;
switch (indexPath.row) {
    case 0: 
 cell.textLabel.text = @"Name";
 cell.detailTextLabel.text = entree.title;
break;
    case 1:
cell.textLabel.text = @"Date";
cell.detailTextLabel.text = [self.dateFormatter stringFromDate:entree.date];
break;
    case 2:
 //aNote = entree.notes;
 if ([[cell.contentView subviews] count] > 0) {
   id view = [[cell.contentView subviews] objectAtIndex:0];
   UILabel *labelToSize = view;
   [label RAD_resizeLabel:labelToSize WithSystemFontOfSize:kTextViewFontSize];
 } else {
   UILabel *cellLabel;
  cellLabel = [label RAD_newSizedCellLabelWithSystemFontOfSize:kTextViewFontSize];
  [cell.contentView addSubview:cellLabel];
  [cellLabel release];
 }

  cell.textLabel.text = @"Notes";
  cell.detailTextLabel.text = entree.notes;// description];
  break;
 }
  return cell;
}

Где entree - это имя моего NSManaged Object, а title, date, notes - это атрибуты. Все, что мне нужно, это иметь возможность установить для ячейки 3 или атрибута notes динамическую высоту, чтобы при вводе большого объема текста эта ячейка и только эта ячейка перемещались, а все остальное оставалось неизменным. Как вы можете видеть, я пробовал кое-что, извиняюсь, если он стал немного грязным, но эта текущая настройка кода приводит к изображениям выше, что близко, но не совсем там. Это может быть просто быстрое решение, так что если кто-то может мне помочь, это будет очень признателен! Заранее спасибо

1 Ответ

2 голосов
/ 07 декабря 2009

Я также написал пост в блоге, в котором содержится код для нескольких ячеек. Вы можете прочитать это на Какао - моя подруга .

Ваш код в вашем ответе не читается, потому что вы неправильно отформатировали его. Вы, вероятно, получите больше / больше отзывов, если исправите это.

С наилучшими пожеланиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...