【发布时间】:2012-12-17 11:10:26
【问题描述】:
如何使用 FMDB 将 SQLite 中的数据显示到标签,如下所示:
我想以这种格式显示输出以供用户查看。没有互动。仅显示 select 查询。
【问题讨论】:
如何使用 FMDB 将 SQLite 中的数据显示到标签,如下所示:
我想以这种格式显示输出以供用户查看。没有互动。仅显示 select 查询。
【问题讨论】:
如果您想添加UILabel 对象,只需遍历您的结果集,为您的视图添加标签。比如:
NSInteger rowNum = 0;
NSArray *columnWidths = @[@(50), @(120), @(75), @(75)];
CGFloat rowHeight = 24.0;
FMResultSet *rs = [db executeQuery:sql];
while ([rs next])
{
CGFloat x = 0.0;
NSInteger colNum = 0;
for (NSNumber *columnWidth in columnWidths)
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x,
rowHeight * rowNum,
[columnWidth floatValue],
rowHeight)];
label.textAlignment = NSTextAlignmentCenter;
label.layer.borderColor = [UIColor blackColor].CGColor;
label.layer.borderWidth = 1.0;
label.text = rs[colNum++];
[self.view addSubview:label];
x += [columnWidth floatValue];
}
rowNum++;
}
[rs close];
我刚刚输入了它,所以我确定其中有拼写错误,但希望它足以让您了解它的外观。如果屏幕上放不下太多行,您可以在视图中添加一个滚动视图,然后将标签作为子视图添加到该视图中。
我也认为 tableview 是一种很棒的方法。或者动态构建您在UIWebView 中显示的HTML 字符串。这里有很多选择。这在一定程度上取决于您的最终目标是什么、数据的性质以及您想要什么样的用户交互。
【讨论】:
UILabel 控件有点麻烦。也许遍历您的结果集一次,调用NSString 方法sizeWithFont 并以编程方式确定columnWidths 数组中所有列的最大宽度。或者,如果您构建了 HTML 表格,那么列宽会为您处理。
您可以通过使用 UITableView 和 custom UITableViewCells 来完成上述操作。
您可以维护一个数组,作为视图控制器的数据源。
考虑到您希望拥有与共享的布局相同的布局(每行有四个标签),您将从数据库中获取数据。
由于从数据库中获取的数据可能会不断增加,UITableView 是显示长数据列表时的最佳选择,因为内存管理和单元格创建是自动处理的。
如果您打算只使用标签,那么事情可能会为您棘手。因为如果您使用select 查询获取的行数过多,那么您最终会创建大量视图,这会导致内存问题。
而且,如果您不希望您的用户与任何行进行交互,请实现以下方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
这是创建自定义单元格的链接:
http://www.appcoda.com/customize-table-view-cells-for-uitableview/
这里是使用表格视图的链接:
http://www.appcoda.com/ios-programming-tutorial-create-a-simple-table-view-app/
祝你好运!!
【讨论】: