以正确的格式显示 UITableView
Posted
技术标签:
【中文标题】以正确的格式显示 UITableView【英文标题】:Displaying UITableView in proper format 【发布时间】:2011-12-12 08:50:04 【问题描述】:我有以下代码从 URL 中获取数据,将其存储在数组中,并将其显示在表中。 我遇到了一些与获取有关的问题,在 SO Click here 上已解决 现在的问题是数据在表格中的显示方式并不理想。
当我运行下面的代码时,我得到了这个输出。灰色阴影部分是我主要关心的问题。 当我尝试通过设计视图在该灰色阴影区域中插入任何元素说按钮时,它会被表格重叠。 如果我改变了
aTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen]applicationFrame] style:UITableViewStyleGrouped];
与
aTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen]applicationFrame] style:UITableViewStylePlained];
我得到了没有灰色阴影的表格输出,但这太简单了。
请注意,我正在以编程方式创建表格。
fetchdataViewController.h
#import <UIKit/UIKit.h>
@interface fetchdataViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
IBOutlet UIWebView *webView;
NSMutableArray *arr1;
NSMutableArray *atarr;
NSMutableArray *arr2;
NSMutableArray *a;
NSMutableArray *b;
NSMutableArray *c;
NSMutableArray *d;
UITableView *aTableView;
-(IBAction)btnClicked:(id)sender;
-(IBAction)btnClicked1:(id)sender;
-(void)gainer;
-(void)looser;
@property(nonatomic,retain)NSMutableArray *arr1;
@property(nonatomic,retain)NSMutableArray *arr2;
@property(nonatomic,retain)NSMutableArray *atarr;
@property(nonatomic,retain)NSMutableArray *a;
@property(nonatomic,retain)NSMutableArray *b;
@property(nonatomic,retain)NSMutableArray *c;
@property(nonatomic,retain)NSMutableArray *d;
@property(nonatomic,retain)UIWebView *webView;
@property(nonatomic,retain)UITableView *aTableView;
@end
fetchdataViewController.m
#import "fetchdataViewController.h"
@implementation fetchdataViewController
NSMutableArray *atarr;
NSMutableArray *arr1;
NSMutableArray *arr2;
NSMutableArray *a;
NSMutableArray *b;
NSMutableArray *c;
NSMutableArray *d;
NSMutableString *mainstr;
NSMutableString *str;
@synthesize webView;
@synthesize arr1;
@synthesize arr2;
@synthesize atarr;
@synthesize a;
@synthesize b;
@synthesize c;
@synthesize d;
@synthesize aTableView;
int i,j;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [a count];
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier=@"Cell";
static NSInteger StateTag = 1;
static NSInteger CapitalTag = 2;
static NSInteger StateTag1 = 3;
static NSInteger StateTag2 = 4;
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
cell=[[[UITableViewCell alloc]initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease];
CGRect frame;
frame.origin.x = 10;
frame.origin.y = 5;
frame.size.height = 35;
frame.size.width = 170;
UILabel *capitalLabel = [[UILabel alloc] initWithFrame:frame];
capitalLabel.tag = CapitalTag;
[cell.contentView addSubview:capitalLabel];
frame.origin.x += 125;
UILabel *stateLabel = [[UILabel alloc] initWithFrame:frame];
stateLabel.tag = StateTag;
[cell.contentView addSubview:stateLabel];
frame.origin.x += 100;
UILabel *stateLabel1 = [[UILabel alloc] initWithFrame:frame];
stateLabel1.tag = StateTag1;
[cell.contentView addSubview:stateLabel1];
frame.origin.x += 100;
UILabel *stateLabel2 = [[UILabel alloc] initWithFrame:frame];
stateLabel2.tag = StateTag2;
[cell.contentView addSubview:stateLabel2];
UILabel *capitalLabel = (UILabel *) [cell.contentView viewWithTag:CapitalTag];
UILabel *stateLabel = (UILabel *) [cell.contentView viewWithTag:StateTag];
UILabel *stateLabel1 = (UILabel *) [cell.contentView viewWithTag:StateTag1];
UILabel *stateLabel2 = (UILabel *) [cell.contentView viewWithTag:StateTag2];
capitalLabel.text=[a objectAtIndex:indexPath.row];
stateLabel.text = [b objectAtIndex:indexPath.row];
stateLabel1.text = [c objectAtIndex:indexPath.row];
stateLabel2.text = [d objectAtIndex:indexPath.row];
return cell;
-(IBAction)btnClicked:(id)sender
[self gainer];
-(IBAction)btnClicked1:(id)sender
[self looser];
-(void)gainer
arr1=[[NSMutableArray alloc]init];
arr2=[[NSMutableArray alloc]init];
a=[[NSMutableArray alloc]init];
b=[[NSMutableArray alloc]init];
c=[[NSMutableArray alloc]init];
d=[[NSMutableArray alloc]init];
NSURL *url=[NSURL URLWithString:@"http://ipad.idealake.com/default.aspx?id=G"];
NSURLRequest *req=[NSURLRequest requestWithURL:url];
[webView loadRequest:req];
//storing page data in string
mainstr=[[NSMutableString alloc] initWithContentsOfURL:url];
atarr=[mainstr componentsSeparatedByString:@"@"];
NSString *str2;
NSString *str3;
for(int i=0; i<[atarr count]-1; i++)
// NSLog(@"i=:%i",i);
NSMutableString *str = [atarr objectAtIndex:i];
if (str!= nil)
arr1=[str componentsSeparatedByString:@";"];
for (int k=0;k<[arr1 count];k++)
str2 = [arr1 objectAtIndex:k];
[arr2 addObject:str2];
else
//NSLog (@"Nill");
for(int l=0;l<[arr2 count]/4;l++)
str3=[arr2 objectAtIndex:4*l];
[a addObject:str3];
str3=[arr2 objectAtIndex:(4*l)+1];
[b addObject:str3];
str3=[arr2 objectAtIndex:(4*l)+2];
[c addObject:str3];
str3=[arr2 objectAtIndex:(4*l)+3];
[d addObject:str3];
-(void)looser
arr1=[[NSMutableArray alloc]init];
arr2=[[NSMutableArray alloc]init];
a=[[NSMutableArray alloc]init];
b=[[NSMutableArray alloc]init];
c=[[NSMutableArray alloc]init];
d=[[NSMutableArray alloc]init];
NSURL *url=[NSURL URLWithString:@"http://ipad.idealake.com/default.aspx?id=L"];
NSURLRequest *req=[NSURLRequest requestWithURL:url];
[webView loadRequest:req];
mainstr=[[NSMutableString alloc] initWithContentsOfURL:url];
atarr=[mainstr componentsSeparatedByString:@"@"];
NSString *str2;
NSString *str3;
for(int i=0; i<[atarr count]-1; i++)
NSMutableString *str = [atarr objectAtIndex:i];
if (str!= nil)
arr1=[str componentsSeparatedByString:@";"];
for (int k=0;k<[arr1 count];k++)
str2 = [arr1 objectAtIndex:k];
[arr2 addObject:str2];
else
//NSLog (@"Nill");
for(int l=0;l<[arr2 count]/4;l++)
str3=[arr2 objectAtIndex:4*l];
[a addObject:str3];
str3=[arr2 objectAtIndex:(4*l)+1];
[b addObject:str3];
str3=[arr2 objectAtIndex:(4*l)+2];
[c addObject:str3];
str3=[arr2 objectAtIndex:(4*l)+3];
[d addObject:str3];
- (void)didReceiveMemoryWarning
[super didReceiveMemoryWarning];
#pragma mark - View lifecycle
- (void)viewDidLoad
arr1=[[NSMutableArray alloc]init];
arr2=[[NSMutableArray alloc]init];
a=[[NSMutableArray alloc]init];
b=[[NSMutableArray alloc]init];
c=[[NSMutableArray alloc]init];
d=[[NSMutableArray alloc]init];
[self gainer];
[super viewDidLoad];
aTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen]applicationFrame] style:UITableViewStyleGrouped];
aTableView.dataSource = self;
aTableView.delegate = self;
aTableView.frame = CGRectMake(0, 10, 720, 500);
[self.view addSubview:aTableView];
[super viewDidLoad];
- (void)viewDidUnload
[super viewDidUnload];
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
- (void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
- (void)viewDidDisappear:(BOOL)animated
[super viewDidDisappear:animated];
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
// Return YES for supported orientations
return YES;
@end
提前致谢
【问题讨论】:
【参考方案1】:如果您的问题是从 groupedtableview 中删除浅灰色区域,则可以通过将其添加到代码中来删除阴影灰色区域:
if ([myTable respondsToSelector:@selector(backgroundView)])
myTable.backgroundView = nil;
只有 iPad 才有 groupedTableViewStyle 的问题。
【讨论】:
@GAMA:不客气^^ 我在某些时候也遇到过同样的问题。真的很烦人,一旦我注意到确切的问题并提出了正确的问题,Google 就给了我很大的帮助。【参考方案2】:首先你为什么要写这行两次?? [super viewDidLoad];
在表格视图中
其次,我认为您正在将获取数据显示到表格视图中的 webview
中。我不明白如果您以编程方式制作表格,那么您如何使用 IBOutlet
显示 webview
到tablevie
?!!
我觉得你可以试试这个[webView setOpaque:NO];
可能会解决问题..
【讨论】:
我没有使用任何 webview。它只是为了验证我能够获取数据。所以我现在把它删除了。以上是关于以正确的格式显示 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
如何以正确的格式以科学记数法显示 PySpark 数据框中的列
ASP.NET MVC3:使用 JQuery DatePicker 和 editorFor/TextBoxFor 以正确的格式显示日期