2009-06-25 3 views
2

Я хотел бы знать, можно ли регулировать ширину UITableViewCell. Я хотел бы поместить изображение слева от него (например, вид контакта в адресной книге). Я нашел сообщение here, которое дает изображение именно того, что я пытаюсь выполнить. Я также хотел бы подтвердить ответы на этот пост.Можно ли настроить ширину UITableViewCell?

ответ

2

OS3.0 имеет некоторые опции стиля в API, которые могут делать то, что вы хотите.

Или, вы можете создать полностью настраиваемую ячейку просмотра таблицы в Interface Builder, например, в одном из моих приложений я делаю это в моем cellForRowAtIndexPath:

PlaceViewCell *cell = (PlaceViewCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [self createNewPlaceCellFromNib]; 
} 

И это метод выкопать его из NIB

- (PlaceViewCell*) createNewPlaceCellFromNib { 
    NSArray* nibContents = [[NSBundle mainBundle] 
          loadNibNamed:@"PlaceCell" owner:self options:nil]; 
    NSEnumerator *nibEnumerator = [nibContents objectEnumerator]; 
    PlaceViewCell* placeCell = nil; 
    NSObject* nibItem = nil; 
    while ((nibItem = [nibEnumerator nextObject]) != nil) { 
     if ([nibItem isKindOfClass: [PlaceViewCell class]]) { 
      placeCell = (PlaceViewCell*) nibItem; 
      if ([placeCell.reuseIdentifier isEqualToString: @"Place" ]) { 
       //NSLog(@"PlaceCell - we have a winner!"); 
       break; // we have a winner 
      } else { 
       placeCell = nil; 
       NSLog(@"PlaceCell is nil!"); 
      } 
     } 
    } 
    return placeCell; 
} 

Затем вы можете создать подкласс UITableViewCell непосредственно в Interface Builder.

+0

Ум, указывающий мне в сторону этих полезных API? Я посмотрел на diff/doc 2.2/3.0 и не мог найти новые параметры стиля, о которых вы говорите. Кроме того, почему-то это помогает создать пользовательскую ячейку представления в Interface Builder? У меня нет проблем с созданием ячейки, у меня просто проблемы с настройкой ее ширины. – 2009-06-25 12:57:59

+0

см. Ответ от Daskaja для получения подробных сведений о предопределенных стилях ячеек в 3.0 – frankodwyer

0

IMO вам не разрешено изменять ширину UITableViewCell, но, к счастью, вам это не нужно. Apple поставляет четыре стиля по умолчанию, которые могут отображать одно изображение на левой границе ячейки (если вы хотите разместить его в другом месте, вам нужно создать собственный макет).

Четыре стили UITableViewCellStyle являются:

  • UITableViewCellStyleDefault
  • UITableViewCellStyleSubtitle
  • UITableViewCellStyleValue1
  • UITableViewCellStyleValue2

Чтобы встроить изображение в UITableViewCell вы Shou л.д. прочитать руководство по программированию Tableview в Apples Developer Подключение к сети: Using Cell Objects in Predefined Styles

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"]; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 
    NSDictionary *item = (NSDictionary *)[self.content objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [item objectForKey:@"mainTitleKey"]; 
    cell.detailTextLabel.text = [item objectForKey:@"secondaryTitleKey"]; 
    NSString *path = [[NSBundle mainBundle] pathForResource:[item objectForKey:@"imageKey"] ofType:@"png"]; 
    UIImage *theImage = [UIImage imageWithContentsOfFile:path]; 
    cell.imageView.image = theImage; 
    return cell; 
} 
+0

Спасибо, что поделились ими, но они не кажутся полезными для того, что я пытаюсь выполнить. Я хотел бы, чтобы изображение было вне клетки полностью (смещено только слева от ячейки) в качестве изображения в сообщении, которое я связывал. Опять же, я не хочу изображение внутри ячейки. Откройте контакты на вашем iPhone или iPod touch и зайдите в детали человека.Вы можете точно видеть, что я пытаюсь сделать там. Смещение изображения слева от ячеек вверху. – 2009-06-25 22:45:48

+0

Хорошо, я вижу, но вы действительно должны прочитать это руководство по программированию таблиц. Среди объясненных способов здесь есть еще один способ. Если вы полностью подклассифицируете UITableViewCell, вы совершенно свободны в том, что хотите сделать. –

0

Вам не нужно, чтобы изменить ширину ячейки. Вам действительно нужно сделать ячейку похожей на, она имеет разную ширину (например, путем изменения ширины видимого поднабора).

К сожалению, ваша ссылка не работает, поэтому я не могу быть более конкретным.

Вы также можете попробовать использовать метод tableView:indentationLevelForRowAtIndexPath: в протоколе UITableViewDelegate.

Смежные вопросы