Можно ли настроить ширину UITableViewCell? - PullRequest
2 голосов
/ 25 июня 2009

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

Ответы [ 3 ]

2 голосов
/ 25 июня 2009

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

Или вы можете создать полностью настраиваемую ячейку табличного представления в Интерфейсном Разработчике, например, в одном из моих приложений я делаю это в своей ячейкеForForowAtIndexPath:

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 непосредственно в Интерфейсном Разработчике.

0 голосов
/ 23 марта 2012

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

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

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

0 голосов
/ 25 июня 2009

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

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

  • UITableViewCellStyleDefault
  • UITableViewCellStyleSubtitle
  • UITableViewCellStyleValue1
  • UITableViewCellStyleValue2

Чтобы встроить изображение в UITableViewCell, вам следует прочитать Руководство по программированию TableView в сети «Подключение разработчика Apple»: Использование объектов ячейки в предопределенных стилях

- (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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...