0

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

有任何想法吗?

这就是它的样子

1 级 2 级
====== ======

34 46
32 33
24 28
20 21
16 18

4

3 回答 3

2

你有两个选择:

在这里做的最优雅的解决方案(尽管您不情愿)是子类UITableViewCell化并提供您自己的表格单元格的实现,其中UILabel每个列值都有两个 s,然后您可以在单元格中间画一条垂直线(一旦显示所有单元格,它将变成表格视图中间的一条线)。

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];
}
于 2013-01-14T23:53:24.020 回答
2

Maybe there are other solutions, but I personally took the road of subclassing UITableViewCell. This is a screenshot of how it looks in my app:

screenshot for multi-row UITableViewCell

Feel free to grab the code for this from the GitHub repo of my app. It's a class named TableViewGridCell ( under the path src/ui). The class has a few limitations that are documented in the header file. In the screenshot you can also see that there is a slight glitch, one cell has its line one pixel off. This still needs fixing...

于 2013-01-15T00:08:15.840 回答
0

您可以制作两个 UITableView 并将它们彼此相邻并在您的视图控制器中独立处理它们。或者,如果您愿意,您可以轻松制作一些格式化的 html 并将其显示在 webview 中。

于 2013-01-14T23:48:49.210 回答