iPhone:显示“报告”的最佳方式是什么?

时间:2011-02-16 16:12:29

标签: iphone xamarin.ios

我有一个应用程序,我需要显示六(6)列和可变行数(行)的报告。

这样做的最佳方法是什么?我尝试了UITextView,但没有办法设置字体大小以使数据适合每一行。

1 个答案:

答案 0 :(得分:3)

我通常使用UIWebViews。

用NSArray和一些不错的CSS创建一个html表的十几行。


编辑:我可以告诉你我在过去5分钟写的一个例子。如果您对html有基本的了解,那就没什么了不起的。当然,你可以采取更多的方式 即使你对HTML没有任何了解,我也相信你可以在几个小时内学习一些简单的桌面显示的基础知识。

- (NSString *)htmlTableRowFromArray:(NSArray *)array withOpenTag:(NSString *)openTag andCloseTag:(NSString *)closeTag {
    NSMutableString *rowHtmlStr = [NSMutableString string];
    for (NSString *str in array) {
        [rowHtmlStr appendFormat:@"%@ %@ %@\n", openTag, str, closeTag];
    }
    return rowHtmlStr;
}


- (void)displayReport {
    NSArray *dataArray = ...;
    NSArray *myHeader = ...;

    NSMutableString *htmlStr = [NSMutableString stringWithString:@"<html><head><title>MyTable</title></head><body>"];

     // the table starts here
    [htmlStr appendString:@"<table width=\"100%\" style=\"background-color:#CCC\" border=\"1\" cellpadding=\"4\" cellspacing=\"0\">"];

    // this will create a table header
    [htmlStr appendFormat:@"<tr>%@</tr>", [self htmlTableRowFromArray:myHeader withOpenTag:@"<th>" andCloseTag:@"</th>"]];

    for (NSArray *line in dataArray) {
        // one row for each array in the data
        [htmlStr appendFormat:@"<tr>%@</tr>", [self htmlTableRowFromArray:line withOpenTag:@"<td>" andCloseTag:@"</td>"]];
    }
    // table ends
    [htmlStr appendString:@"</table>"];

    [htmlStr appendString:@"</body></html>"];

    [webView loadHTMLString:htmlStr baseURL:nil];
}

表格应如下所示。 Imho并没有那么糟糕的工作量。

enter image description here