我是iphone App的新程序员...我在桌面视图的第一个单元格中有7个标签和1个imageView ......
我为此编写了这段代码.....这项工作令人满意......(滚动时可能需要时间)
请告诉我......这是完成这项任务的正确方法......?
如果没有请...告诉我..正确的方式......
提前致谢
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]] autorelease];
}
if(indexPath.row==0)
{
CGRect frame=CGRectMake(120,10, 80, 40);
UILabel *label1=[[UILabel alloc]init];
label1.frame=frame;
label1.text=@"first label";
[cell.contentView addSubview:label1];
[label1 release];
CGRect frame2=CGRectMake(200,10, 80, 40);
UILabel *label2=[[UILabel alloc]init];
label2.frame=frame2;
label2.text=@"second label";
[cell.contentView addSubview:label2];
[label2 release];
and so on.......
}
else if(indexPath.row==1)
{
//add four labels for this cell here......
}
return cell;
}
答案 0 :(得分:3)
当您重复使用单元格时,您不需要第二次创建标签:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]] autorelease];
if(indexPath.row==0)
{
CGRect frame=CGRectMake(120,10, 80, 40);
UILabel *label1=[[UILabel alloc]init];
label1.frame=frame;
label1.text=@"first label";
label1.tag = 1001;
[cell.contentView addSubview:label1];
[label1 release];
CGRect frame2=CGRectMake(200,10, 80, 40);
UILabel *label2=[[UILabel alloc]init];
label2.frame=frame2;
label2.text=@"second label";
label2.tag = 1002;
[cell.contentView addSubview:label2];
[label2 release];
and so on.......
}
}
if(indexPath.row==0)
{
UILabel *label1=[cell viewWithTag:1001];
label1.text=@"first label";
UILabel *label2=[cell viewWithTag:1002];
label2.text=@"second label";
and so on.......
}
return cell;
}
我正在使用tag
值访问以前创建的标签。
答案 1 :(得分:0)
我认为,在InterfaceBuilder中设计如此复杂的单元会容易得多。如果您正在使用Storyboard,则可以在表格视图中立即设计自定义单元格。如果您正在使用xib,则可以创建一个nib,它将具有自定义UITableViewCell而不是表视图,UIViewController作为所有者,并在项目中声明UITableViewCell的子类。这应该让你的痛苦更容易=)