我正在尝试构建一个待办事项列表应用。我的StoryBoard包含2个通过push Segue连接的视图控制器。第一个ViewController是一个表View Controller,第二个是View Controller。第二个视图控制器包含标题,描述和日期字段,数据从第二个视图控制器获取并显示在第一视图控制器中。数据以对象形式接收,例如taskObject,其具有三个文本字段的三个属性(标题,描述和日期)。
我想要显示一个像下面这样的单元格:
Buy Notebook (Title Text)
2 with both side rule pages, 1 with single side ruled (Description Text)
27/07/2015 (Date Text)
我已经完成了:
要清楚。两者都不是我的情况。
我试图像这样显示:
cell.textLabel.text = [[self.allTask objectAtIndex:indexPath.row] titleText] ;
cell.detailTextLabel.numberOfLines = 0;
cell.detailTextLabel.Text = [self.allTask[indexPath.row] descriptionText];
cell.detailTextLabel.Text =[[self.allTask objectAtIndex:indexPath.row] dat
但它不起作用,只有最后一个cell.textLabel.text的数据是可见的。
我添加了:
cell.textLabel.numberOfLines = 0;
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
但是,如果你想从一个数据源显示多行(不是我的情况),它是有帮助的。在我的情况下,必须在单元格内的三个不同行中显示来自三个不同数据属性的三个数据。
我知道通过自定义单元格可以实现。他们是通过其他方式吗? 任何帮助都会得到赞赏。
答案 0 :(得分:1)
如果你这样做
cell.textLabel.text = [[self.allTask objectAtIndex:indexPath.row] titleText] ;
cell.textLabel.text = [[self.allTask objectAtIndex:indexPath.row] descriptionText];
cell.textLabel.text = [[self.allTask objectAtIndex:indexPath.row] dateText];
您每次都有效地覆盖textLabel
。标准UITableViewCell
具有另一个标签detailTextLabel
(如果其样式不是默认值)。但是如果不使用自定义单元格,三个标签是不可能的。您可以实现的最好方法是使用多行标签,如下所示:
Task *task = (Task *)[self.allTask objectAtIndex:indexPath.row];
cell.textLabel.text = [task titleText];
cell.detailTextLabel.numberOfLines = 0; // 0 means 'no limit'
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@\n%@",
[task descriptionText], [task dateText]];
但您可能需要调整tableview的rowHeight。
答案 1 :(得分:0)
您应该创建自定义UITableViewCell并根据您的需要进行设计。
This Article Here可以成为入门的好地方
编辑: -
您可以从代码中注意到,您要将数据分配到tableview单元格的同一文本标签中,因此只会在单元格上显示最新的字符串。
答案中链接的文章有效地解释了如何使用故事板创建自定义UITableViewCell并根据我们的需要进行设计。