在一个ViewController中将UITableViewCells设置为不同的UITableViews

时间:2013-04-21 21:40:59

标签: uitableview grid cell nsindexpath

我使用TableView for iPhone构建一个Viewcontroller。现在我尝试生成相同的内容,但在一种网格中排序。它应该是3 x 3.我生成了四边形,测量值为220px x 220px,并且还将TableView的宽度设置为220.

为了生成网格,我考虑插入另外两个将获得3个指定单元格的Tableview。问题是,我的ViewController中有方法“cellForRowAtIndex”,我无法将单元格插入到我想要的tableview中。 我找到了一个名为

的方法
[self.channelTableView2 insertRowsAtIndexPaths:0    
                              withRowAnimation:UITableViewRowAnimationAutomatic];

但是,当您处于编辑模式时,这似乎是在表视图中添加新行的方法。

我还考虑创建一个条件,将3个特定列设置到每个tableview中,但对我来说,似乎方法cellForRowAtIndexPath只适用于一个TableView,你不能在其中指定任何内容。

有人知道如何解决这个问题吗?我还看到其他帖子已经创建了一个网格,但如果我创建一个新的View而不是一个新的UITableViewCell,我就不能使用旧的代码。我听说过集合视图,但只有iOS 6的设备支持它。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我有3个tableviews。他们的委托和数据源与我的ViewController连接。比我为这三个表创建了一个属性。在我的cellForRowAtIndexPath方法中,我检测将在特定的tableview中显示哪个tableviewcell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

MyObject *anObject;
if(tableView == tableview1){

    anObject = [initializedObjects objectAtIndex:indexPath.section * 3];

}else if(tableView == tableview2){

    anObject = [initializedObjects objectAtIndex:indexPath.section * 3 + 1];
}else if(tableView == tableview3){

    anObject = [initializedObjects objectAtIndex:indexPath.section * 3 + 2];
}

我还禁用了所有表格的滚动,所以它似乎是一个网格。必须在“didSelectRowAtIndexPath”中进行相同的检测,否则您只需选择对象数组中的前三个元素。 (在本例中为“initializedObjects”)。