我有一个应用程序,我需要显示六(6)列和可变行数(行)的报告。
这样做的最佳方法是什么?我尝试了UITextView,但没有办法设置字体大小以使数据适合每一行。
答案 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并没有那么糟糕的工作量。