我有一个分数屏幕,我想在屏幕上垂直显示前 5 个分数(Level1 和 Level2),并用一条线将它们分开。分数来自两个按降序排序的 NSArray 对象。我一直在研究 UITableView / UITableViewCell 以显示多列,它看起来涉及更多我正在寻找的编码。是否有任何其他替代 iOS 控件可以完成这项工作?
有任何想法吗?
这就是它的样子
1 级 2 级 ====== ====== 34 46 32 33 24 28 20 21 16 18
我有一个分数屏幕,我想在屏幕上垂直显示前 5 个分数(Level1 和 Level2),并用一条线将它们分开。分数来自两个按降序排序的 NSArray 对象。我一直在研究 UITableView / UITableViewCell 以显示多列,它看起来涉及更多我正在寻找的编码。是否有任何其他替代 iOS 控件可以完成这项工作?
有任何想法吗?
这就是它的样子
1 级 2 级 ====== ====== 34 46 32 33 24 28 20 21 16 18
你有两个选择:
在这里做的最优雅的解决方案(尽管您不情愿)是子类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];
}
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:
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...
您可以制作两个 UITableView 并将它们彼此相邻并在您的视图控制器中独立处理它们。或者,如果您愿意,您可以轻松制作一些格式化的 html 并将其显示在 webview 中。