как сделать добавление UIView в представление содержимого UITableViewCell в его пределах? - PullRequest
1 голос
/ 13 июня 2011

как сделать добавление UIView к представлению содержимого UITableViewCell в его пределах?

То есть я создал один файл NIB (с 3 метками на нем) и хочу использовать его для отображения каждой ячейки в UITableView. Я добавляю в метод cellForRowAtIndexPath настраиваемое представление на основе NIB к представлению содержимого ячейки, однако все, что я вижу в качестве конечного результата, - это одно (1) настраиваемое представление на основе NIB (не несколько в представлении таблицы, как я ожидал).

Как мне сделать так, чтобы каждое пользовательское представление аккуратно вписывалось в каждый UITableViewCell? Также обратите внимание, что надписи в пользовательском представлении NIB имеют перенос слов.

Нужно ли создавать рамку для пользовательского представления NIB, но тогда в этом случае я не совсем уверен, как установить координаты. Будет ли это относительно UITableViewCell? и если высота пользовательского представления может измениться из-за переноса слов UILabel, то я предполагаю, что мне отдельно приходится вручную вычислять эту высоту в UITableView? (возможно, мне следует перейти к созданию динамического / пользовательского представления и отказаться от концепции использования InterfaceBuilder / NIB)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    UIView *detailedView = [[[NSBundle mainBundle] loadNibNamed:@"DetailedAppointView" owner:self options:nil] objectAtIndex:0];
    [cell.contentView addSubview:detailedView];  // DOESN'T SEE TO WORK

    return cell;
}

1 Ответ

1 голос
/ 13 июня 2011

Вот как я это делаю, если мне нужно реализовать пользовательский UITableViewCell.

Я создаю подкласс UITableViewCell для своей пользовательской ячейки, например. "MyCustomCell". Затем я создаю для него файл NIB, и в этом файле NIB я вставляю UITableViewCell и меняю его тип на «MyCustomCell», и я даю ему идентификатор с тем же именем, что и у имени класса. Затем я вставляю все свои подпредставления в свою камеру. Все в IB.

После того, как я получил доступ к своей камере, я использую ее следующим образом:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MyCustomCell";
    static NSString *CellNib = @"MyCustomCell";

    MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil];
        cell = (MyCustomCell *)[nib objectAtIndex:0];
    }

    //Manipulate your custom cell here

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