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

Код

self.arrayContainer = [[NSMutableArray alloc]initWithObjects:
                           [NSDictionary dictionaryWithObjectsAndKeys:
                            @"H.Rackham",@"name",
                            @"20/7/1994",@"date",
                            @"Lorem ipsum dolor sit amet, qui ex blandit posidonium efficiantur, sed te veri bonorum. Per id iriure utroque docendi. Stet patrioque incorrupte ea nam. Prima molestie accommodare nam in, inermis omnesque vix cu.                            Est posse suavitate eu, ei justo labitur necessitatibus has, no sea agam liber. Deseruisse elaboraret eu ius. Est verterem sententiae an. Prompta elaboraret duo cu, aperiam dolorem has an, ubique nominati comprehensam no pri. In autem scripta concludaturque cum.",@"Description",nil],
                           [NSDictionary dictionaryWithObjectsAndKeys:
                            @"Sophia Rhodes",@"name",
                            @"20/7/1994",@"date",
                            @" Deseruisse elaboraret eu ius. Est verterem sententiae an. Prompta elaboraret duo cu, aperiam dolorem has an, ubique nominati comprehensam no pri. In autem scripta concludaturque cum.",@"Description",
                            nil],
                           nil];

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.arrayContainer count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *identifier = @"cell";

    UITableViewCell *cell = [tableView  dequeueReusableCellWithIdentifier:identifier];

    cell.textLabel.text = [[self.arrayContainer objectAtIndex:indexPath.row ]valueForKey:@"name"];
    cell.detailTextLabel.text = [[self.arrayContainer objectAtIndex:indexPath.row ]valueForKey:@"date"];
    return cell;

}
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 44;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewAutomaticDimension;
}

Образ

enter image description here

Я сделал простую демонстрацию кода. теперь мне нужна такая функциональность.

1) Имя и дата должны отображаться иначе, как указано на изображении.

2) В соответствии с содержимым ячейки необходимо изменить размер.

Спасибо

1
Hardik1344 7 Янв 2017 в 20:02

1 ответ

Лучший ответ

Вы должны использовать CustomCell.

Добавьте в проект новый файл с шаблоном класса Objective-C. Назовите его DetailViewell и сделайте подклассом UITableViewCell.

для вашего первого требования: пожалуйста, выполните следующие действия, это поможет вам: Как создать настраиваемую ячейку

Для вашего второго требования:

Если вы установите правильные ограничения autolayout для метки, вам нужно установить только следующий метод делегата для достижения этого.

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
   //minimum size of your cell, it should be single line of label if you are not clear min. then return UITableViewAutomaticDimension;    
   return UITableViewAutomaticDimension; 
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewAutomaticDimension;
}
2
Suraj Sukale 7 Янв 2017 в 20:19
Спасибо, Сурадж, за то, что предложил мне, как я могу установить ограничения автоматического раскладки для метки?
 – 
Hardik1344
7 Янв 2017 в 20:29
 – 
Suraj Sukale
7 Янв 2017 в 20:40
Добро пожаловать @ hd1344, если он работает, вы можете проголосовать и принять мой ответ, потому что он будет полезен другим в будущем :)
 – 
Suraj Sukale
9 Янв 2017 в 09:35