在单个UiView控制器类中,我添加了3个UITableView。
UITableView *ChaptersTableView;
UITableView *SubChaptersTableView;
UITableView *SubTopics1TableView;
现在,我在ViewDidLoad类中初始化了这些TableView的&致电代表和这些表视图上的数据源方法。
ChaptersTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 300, 300)];
ChaptersTableView.delegate=self;
ChaptersTableView.dataSource=self;
SubChaptersTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 300, 300)];
SubChaptersTableView.delegate=self;
SubChaptersTableView.dataSource=self;
SubTopics1TableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 300, 300)];
SubTopics1TableView.delegate=self;
SubTopics1TableView.dataSource=self;
我希望有不同的内容和不同表视图的行的高度。例如。 TableView1的单元格高度为20,TableView2的单元格高度为40& TableView3的单元格高度为60。
那么我该如何定制这些代表&数据源方法取决于它们被调用的tableView?
感谢。
答案 0 :(得分:2)
委托方法返回tableview对象。因此,在创建时,您可以像这样标记tableviews。 SubTopics1TableView.tag = 0, SubChaptersTableView.tag = 1
等。
在您的委托方法中,检查标记并配置tableviews。 例如
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableview.tag == 0)
// Customise this tableview
}
要更改单元格的外观,可以使用委托方法:
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
要更改可以使用的行的高度:
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
答案 1 :(得分:1)
看看这段代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
static NSString *cellIden = nil;
UITableViewCell *cell = nil;
if( [mTableView1 isEqual:tableView ])
{
cellIden = @"Cell1";
cell = [tableView dequeueReusableCellWithIdentifier:cellIden];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIden];
}
cell.textLabel.text = [mList objectAtIndex:indexPath.row];
}
if( [mTableView2 isEqual:tableView ])
{
cellIden = @"Cell2";
cell = [tableView dequeueReusableCellWithIdentifier:cellIden];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIden];
}
cell.textLabel.text = [mArray objectAtIndex:indexPath.row];
}
return cell;
}
答案 2 :(得分:0)
为每个表分配标签....
-(CGFloat )tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
if(tableView.tag==1)
return 20;
else if(tableView.tag==2)
return 40;
else if(tableView.tag==3)
return 60;
}
答案 3 :(得分:0)
要修改单元格的高度,您必须在委托类中实现tableView:heightForRowAtIndexPath:
,而不是数据源。您可以将同一个委托附加到所有三个表,并以这种方式实现该方法:
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
if ([tableView kindOfClass:[ChaptersTableView class]])
return 20;
else if ([tableView kindOfClass:[SubChaptersTableView class]])
return 40;
else if ([tableView kindOfClass:[SubTopics1TableView class]])
return 60;
else return 44;
}
如果您计划使用具有不同但唯一的类的不同表,则此解决方案将起作用。如果您计划区分实现相同类的两个不同表的单元格高度(例如tableView1
== tableView2
= Class1
类),则应设置不同的标志在该类的实现和测试该标志的值。
请告诉我这是否有帮助