![在此处输入图片说明] [2]我有一个表格视图,其中我使用的是我的自定义单元格,其中包含用户的个人资料图片,状态标签,时间戳标签,用户名标签,no评论标签和评论按钮。 当没有评论,即“4评论”被点击时,我必须在相应的单元格中显示评论以及原始帖子下面的用户名,用户个人资料图片等。 如何在应用程序运行时将这些对象动态添加到单元格中?还是有其他解决方案请告诉。 2个帖子的表格显示在图像右侧。应显示没有图像左侧的评论。 这是表格单元格的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCell";
TableCell *cell = (TableCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (TableCell *)currentObject;
break;
}
}
}
// Configure the cell.
User *user = [postTableData objectAtIndex:indexPath.row];
NSLog(@"pic:%@",user.profilePictureURL);
cell.profilePicture.image = [UIImage imageNamed:@"avatar.png"];
cell.profilePicture.layer.cornerRadius = cell.profilePicture.frame.size.height /2;
cell.profilePicture.layer.masksToBounds = YES;
cell.profilePicture.layer.borderWidth = 0;
cell.userName.text = user.name;
cell.status.text = user.status;
cell.dateForStatus.text = user.datePosted;
[cell.countComments setTitle:user.countOfComments forState:UIControlStateNormal];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[cell.contentView.layer setBorderWidth:6.0f];
[cell.contentView.layer setBorderColor:[[UIColor alloc] initWithRed:233/255.0 green:236/255.0 blue:233/255.0 alpha:1.0].CGColor];
cell.commentButton.tag=indexPath.row;
[cell.commentButton addTarget:self action:@selector(commentButtonPressAction:) forControlEvents:UIControlEventTouchUpInside];
return cell;
![enter image description here][3]}
答案 0 :(得分:1)
我不确定它是否有效,但你可以尝试一下。覆盖您单元格上的touchesBegan:
:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
CGRect rect = [noComments frame];
if (CGRectContainsPoint(rect, point))
{
UILabel *label = ... // the label you need to add.
[self addSubview:label];
}
}
答案 1 :(得分:1)
更改按钮操作方法:
- (void)onButtonTaped:(id)sender
{
UIButton *button = sender;
UILabel *newLabel = [ [ UILabel alloc] initWithFrame:CGRectMake (0, 100, 200, 50)];
newLabel.text = @"Your new text here";
[button.superview addSubview:newLabel];
}
但只有在屏幕上显示单元格之后,标签才会可见。当重建单元格时,标签将被删除。要保留标签,您仍需要更改
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
答案 2 :(得分:1)
我猜你是想扩大细胞。
您可以调用这几行来更新单元格,包括高度。
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[tableView endUpdates];
所以只需设置一个标志以在cellForRowAtIndexPath中显示注释。
//AFTER_YOUR_SETTING
if(showComment){
[cell loadCommentMethod];
}
而且,在heightForRowAtIndexPath
中if(showComment){
return [CellClass publicMethodForCalHeight:dataAtIndexPath];
} else {
return kDefaultCellHeight;
}
答案 3 :(得分:0)
您可以使用insertRowsAtIndexPaths:withRowAnimation:
的方法UITableView
。您可以参考this link获取教程。另请参阅Apple docs