如何根据表格视图单元格中的内容创建动态单元格?
如何根据表格视图单元格中的内容创建动态单元格?
我正在创建图像中提到的动态单元格。
如何在表视图中创建动态单元格。
代码
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; }
图像
我已经制作了一个简单的代码演示。
现在我想要这种类型的功能。
1)根据图像中所示,名字和日期应该以不同的方式显示。
2)根据内容调整单元格的大小。
谢谢
问题:如何根据表视图单元格的内容创建动态单元格?
原因:为了实现这个需求,需要使用自定义单元格(CustomCell)。需要添加一个新文件到工程中,选择Objective-C类模板,命名为DetailViewCell,并让其成为UITableViewCell的子类。
解决方法:对于第一个需求,可以参考链接(https://www.ioscreator.com/tutorials/customize-tableviewcells-with-storyboards)中的教程来创建自定义单元格。
对于第二个需求,如果在标签(label)上设置了正确的自动布局约束,则只需实现以下委托方法即可实现该功能:
-(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;
}
非常感谢Suraj提供的建议,关于如何为标签设置自动布局约束,请参考链接(http://stackoverflow.com/questions/12789013)。
如果这个方法对您有用的话,请点赞并接受我的回答,因为这对其他人在未来也会有所帮助。