1

如何使用 FMDB 将 SQLite 中的数据显示到标签,如下所示:

在此处输入图像描述

我想以这种格式显示任何输出供用户查看。没有互动。仅显示select查询。

4

2 回答 2

1

您可以通过使用UITableView自定义 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/

祝你好运!!

于 2013-01-03T04:43:33.337 回答
1

如果您想添加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. 这里有很多选择。这在一定程度上取决于您的最终目标是什么,数据的性质,您想要什么样的用户交互。

于 2013-01-03T05:03:55.197 回答