我有一个静态单元格,用于存储用户可以输入字段的信息表单。其中一个静态单元用于附件。当用户从UIImagePickerController中选择一个图像时,我想将一些UIView附加到这个单元格中。我已经处理过UIImagePickerController部分了。我通过reuseIdentifier找到了这个单元格:
UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"AttachmentCell"];
我试图在我的单元格中添加视图:
CGRect attachmentFrame = CGRectMake(0, 0, 50, 50);
UIView * attachmentRow = [[UIView alloc]initWithFrame: attachmentFrame];
CGFloat ratio = 50 / image.size.width;
CGRect imageFrame = CGRectMake(10, 0, image.size.width * ratio, 50);
CGRect imageNameLabelFrame = CGRectMake(10 + imageFrame.size.width + 10, 22, 300, 6);
UIImageView *imageView = [[UIImageView alloc]initWithFrame: imageFrame];
imageView.image = image;
UILabel *imageNameLabel = [[UILabel alloc]initWithFrame:imageNameLabelFrame];
imageNameLabel.text = [NSString stringWithFormat:@"Attachment %d", attachmentCounter++];
[attachmentRow addSubview: imageView];
[attachmentRow addSubview: imageNameLabel];
attachmentRow.backgroundColor = [UIColor lightGrayColor];
[cell.contentView addSubview: attachmentRow];
NSLog(@"Row appended");
请注意,上面的代码只是尝试在静态单元格中添加一个单独的视图,但似乎失败了。添加视图后,我的静态单元格中没有显示任何内容。我已经记录了我的附件数据可以成功地带到这个页面。
答案 0 :(得分:1)
首先添加此行
[cell.contentView addSubview: attachmentRow];
然后
[attachmentRow addSubview: imageView];
[attachmentRow addSubview: imageNameLabel];
可能会有所帮助
答案 1 :(得分:1)
也许这只是问题中的措辞,但似乎用户选择图像后所做的就是创建一个新单元格。
这一行:
UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"AttachmentCell"];
创建一个全新的单元格,您的表格视图无法知道它。
您应该做的是在用户选择图像并在其中设置后重新加载表格视图
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
为了重新加载数据,您可以使用reloadData
UITableView
方法重新加载所有数据,或- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *) withRowAnimation:(UITableViewRowAnimation)animation
只重新加载指定索引的单元格。
答案 2 :(得分:0)
您必须使用自定义单元格而不是使用默认的tableview单元格。 首先,您需要创建一个带标识符的文件。