我有一个Scores屏幕,我想在屏幕上垂直显示前5个分数(Level1和Level2),并用一条线来划分它们。分数来自两个按降序排序的NSArray对象。我一直在研究UITableView / UITableViewCell来显示多个列,看起来它涉及到我正在寻找的更多编码。还有其他替代iOS控件可以完成这项工作吗?
有什么想法吗?
这就是它的样子
Level1 Level2 ====== ====== 34 46 32 33 24 28 20 21 16 18
答案 0 :(得分:2)
您有两种选择:
这里做的最优雅的解决方案(尽管你不情愿)是子类UITableViewCell
并提供你自己的表格单元格的实现,每个列值有两个UILabel
,然后你可以在单元格的中间绘制一条垂直线(一旦显示所有单元格,它将在表格视图的中间变成一条线)。
另一种选择只是向UILabel
中的表格视图单元格添加额外的-tableView:cellForRowAtIndexPath:
并设置frame
,使其位于单元格的右侧:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
self.textLabel.text = [firstArray objectAtIndex:indexPath.row];
UILabel *secondColumnLabel = [[UILabel alloc] initWithFrame:CGRectMake(<customize your values here>];
secondColumnLabel.backgroundColor = [UIColor clearColor];
// any other customization goes here
secondColumnLabel.text = [secondArray objectAtIndex:indexPath.row];
[cell addSubview:secondColumnLabel];
}
答案 1 :(得分:2)
也许有其他解决方案,但我亲自走了子类化UITableViewCell
的道路。这是它在我的应用程序中的外观截图:
随意从the GitHub repo of my app获取此代码。它是一个名为TableViewGridCell
的类(在路径src/ui
下)。该类有一些限制,在头文件中记录。在屏幕截图中,您还可以看到有一个轻微的故障,一个单元格的一行像素关闭。这还需要修复......
答案 2 :(得分:0)
你可以制作两个UITableView并将它们放在一起,并在viewcontrller中独立处理它们。或者,如果你想要,你可以轻松地制作一些格式化的HTML并在webview中显示它。