如何将分数垂直显示为2列

时间:2013-01-14 23:47:03

标签: ios objective-c xcode

我有一个Scores屏幕,我想在屏幕上垂直显示前5个分数(Level1和Level2),并用一条线来划分它们。分数来自两个按降序排序的NSArray对象。我一直在研究UITableView / UITableViewCell来显示多个列,看起来它涉及到我正在寻找的更多编码。还有其他替代iOS控件可以完成这项工作吗?

有什么想法吗?

这就是它的样子

Level1      Level2
======      ======

34            46
32            33
24            28
20            21
16            18 

3 个答案:

答案 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的道路。这是它在我的应用程序中的外观截图:

screenshot for multi-row UITableViewCell

随意从the GitHub repo of my app获取此代码。它是一个名为TableViewGridCell的类(在路径src/ui下)。该类有一些限制,在头文件中记录。在屏幕截图中,您还可以看到有一个轻微的故障,一个单元格的一行像素关闭。这还需要修复......

答案 2 :(得分:0)

你可以制作两个UITableView并将它们放在一起,并在viewcontrller中独立处理它们。或者,如果你想要,你可以轻松地制作一些格式化的HTML并在webview中显示它。