自从我开始使用此应用以来,这一直让我感到非常疯狂。基本上我有一个带有图像和标签的UITableViewCell,我希望在同一行中有另一个UITableViewCell,其下一个结果的图像和标签就在它旁边。
像PrettyKit那样但不使用该框架的东西:
所以......让我们说我的数据库返回了四个结果,列是id,text和image。那些结果将是id1,text1,image1,id2,text2,image2,id3,text3,image3,id4,text4,image4:
Image1 | Image2
Text1 | Text2
Image3 | Image4
Text3 | Text4
等等。
我已经有了一个完全符合布局的xib ...而且我知道我可以将两个按钮并排放在一行......但我不知道如何填充我的图像视图和文本视图以便数据可以并排在一排。
有什么想法吗?
更新:决定给UICollectionView一个镜头,因为它似乎是我想要做的最好的解决方案。但是在将TableView转换为CollectionView时遇到了一些麻烦。 xcode Converting UITableView to UICollectionView (no valid cell)
答案 0 :(得分:5)
为此您可以使用UICollection view controller
。
或者如果您想使用Table view
,请根据您的要求创建custom cell
。
答案 1 :(得分:1)
您的数据源应该是一个自定义对象数组(具有左侧文本,右侧文本,左侧图像,右侧图像的属性)或一组字典。像这样的东西,
@[@{@"text1":@"whatever", "text2":@"something else", @"image1:@"someImageName.jpg", @"image2": @"someOtherImageNamejpg"}, @{@"text1":@"another string", "text2":@"yet another string", @"image1:@"differentImageName.jpg", @"image2": @"otherDifferentImageNamejpg"}]
在表视图控制器中,填充此数组中的单元格
- (TableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.leftLabel.text = self.theData[indexPath.row][@"text1"];
cell.rightLabel.text = self.theData[indexPath.row][@"text2"];
cell.leftImageView.image = [UIImage imageNamed:self.theData[indexPath.row][@"image1"]];
// etc.
return cell;
}
答案 2 :(得分:0)
按照设计,表视图每行只支持一个单元格。您可以仍然使用表格视图执行此操作,方法是将自定义单元格包含两次(左/右),但这有一些大的缺点。您必须为所做的一切进行索引路径计算。如果你想从列表中删除一个元素怎么办?在这种情况下,您需要重新加载受影响行下方的所有行,因为左侧的内容现在位于上方单元格的右侧。所以,基本上你放弃了表格视图为你提供的大多数功能,只是大幅度地弯曲它来做一些不是为它设计的东西。
那么,解决方案是什么?它实际上非常简单(假设您的目标是iOS6 +):使用UICollectionView
和UICollectionViewFlowLayout
。