UItableviewcontroller 单元格文本标签内容未显示 [英] UItableviewcontroller cell text label content not displayed

查看:32
本文介绍了UItableviewcontroller 单元格文本标签内容未显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在我的应用程序中成功解析了 json 文件,但是当我尝试在表格视图中显示所有它时,它没有显示出来.这是我的代码.

NSString *urlstr=[NSString stringWithFormat:@"http://minora.p41techdev.net/portal.php"];NSURL *url=[NSURL URLWithString:urlstr];NSData *data =[NSData dataWithContentsOfURL:url];NSError *错误;NSArray *json=(NSMutableArray*) [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];//NSLog(@"%@",json);NSDictionary *dict =[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a title", @"more data",nil] forKeys:[NSArray arrayWithObjects:@"titleKey",@"dataKey", nil]];NSLog(@"1");NSString *integ = [dict valueForKey:@"id"];NSString *title=[dict valueForKey:@"title"];NSString *category=[dict valueForKey:@"category"];NSString *description=[dict valueForKey:@"description"];NSString *spectitle=[dict valueForKey:@"spectitle"];NSString *specvalue=[dict valueForKey:@"specvalue"];NSArray *arr =[NSArray arrayWithObjects:integ,title,category,description,spectitle,specvalue, nil];[tablearray addObject:arr];NSLog(@"%@",tablearray);}- (void)viewDidUnload{[超级viewDidUnload];//释放主视图的所有保留子视图.//例如self.myOutlet = nil;}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{return (interfaceOrientation == UIInterfaceOrientationPortrait);}#pragma mark - 表视图数据源- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{//#warning 方法实现不完整.//返回部分中的行数.返回 [表数组计数];NSLog(@"5");}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{静态 NSString *CellIdentifier = @"Cell";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];cell.textLabel.text=[[tablearray objectAtIndex:indexPath.row] objectAtIndex:1];返回单元格;

}

我的json文件看起来像这样

<预><代码>[{"id": "1","category": "新类别 1","title": "新产品2","description": "请输入说明1","imgurl": "http://s.wordpress.org/about/images/wordpress-logo-notext-bg.png","spectitle": "规格",规格":价值"},{"id": "2","类别": "手机","title": "三星","description": "请输入说明","imgurl": "http://s.wordpress.org/about/images/wordpress-logo-notext-bg.png","spectitle": "价格",规格值":100$"}]

请指导...

我遇到了这样的线程问题

2012-07-20 19:36:03.504 tablevc[2253:f803] 12012-07-20 19:36:03.505 tablevc[2253:f803] 22012-07-20 19:36:03.507 tablevc[2253:f803] 42012-07-20 19:36:03.507 tablevc[2253:f803] 32012-07-20 19:36:03.508 tablevc[2253:f803] *** 断言失败 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:],/SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:60612012-07-20 19:36:03.508 tablevc[2253:f803] *** 由于未捕获的异常NSInternalInconsistencyException"而终止应用程序,原因:UITableView 数据源必须从 tableView:cellForRowAtIndexPath 返回一个单元格:"*** 首先抛出调用堆栈:(0x13d2022 0x1563cd6 0x137aa48 0x9b32cb 0xb6d28 0xb73ce 0xa2cbd 0xb16f1 0x5ad21 0x13d3e42 0x1d8a679 0x1d94579 0x1d194f7 0x1d1b3f6 0x1d1aad0 0x13a699e 0x133d640 0x13094c6 0x1308d84 0x1308c9b 0x12bb7d8 0x12bb88a 0x1c626 0x2ae2 0x2a55为0x1)终止称为抛出异常

解决方案

我在任何地方都没有看到 tablearray 的初始化.

将此添加到您的 viewDidLoad 方法中:

tablearray = [[NSMutableArray alloc] init];

我还看到您在数组中插入了一个数组.这意味着当您需要访问正确的数据(在您的情况下为 NSString)时,您必须使用正确的索引:

cell.textLabel.text=[[tablearray objectAtIndex:indexPath.row] objectAtIndex:1];

我使用了objectAtIndex:1",因为标题字符串存储在内部数组的索引 1 处.更好、更通用的方法是使用 NSDictionary.例如:

NSDictionary *dict =[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a title", @"more data",nil] forKeys:[NSArray arrayWithObjects:@"titleKey",@"dataKey"]];

此外,请确保您的代理人为您的表格返回正确数量的部分.

I ve successfully parsed json file in my app but when i tried to display all it in table view its not getting displayed .here is my code.

NSString *urlstr=[NSString stringWithFormat:@"http://minora.p41techdev.net/portal.php"];

NSURL *url=[NSURL URLWithString:urlstr];

NSData *data =[NSData dataWithContentsOfURL:url];

NSError *error;

NSArray *json=(NSMutableArray*) [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

//NSLog(@"%@",json);
NSDictionary *dict =[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a title", @"more data",nil] forKeys:[NSArray arrayWithObjects:@"titleKey",@"dataKey", nil]];


NSLog(@"1");

NSString *integ = [dict valueForKey:@"id"];
NSString *title=[dict valueForKey:@"title"];
NSString *category=[dict valueForKey:@"category"];
NSString *description=[dict valueForKey:@"description"];
NSString *spectitle=[dict valueForKey:@"spectitle"];
NSString *specvalue=[dict valueForKey:@"specvalue"];

NSArray *arr =[NSArray arrayWithObjects:integ,title,category,description,spectitle,specvalue, nil];

[tablearray addObject:arr];    
NSLog(@"%@",tablearray);





}

- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - Table view data source


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//#warning Incomplete method implementation.
// Return the number of rows in the section.
return [tablearray count];
NSLog(@"5");

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    cell.textLabel.text=[[tablearray objectAtIndex:indexPath.row] objectAtIndex:1];   


    return cell;

}

and my json file looks like this

[
{
    "id": "1",
    "category": "New Category1",
    "title": "New Product2",
    "description": "Please type a description1",
    "imgurl": "http://s.wordpress.org/about/images/wordpress-logo-notext-bg.png",
    "spectitle": "Specification",
    "specvalue": "Value"
},
{
    "id": "2",
    "category": "Mobile",
    "title": "Samsung",
    "description": "Please type a description",
    "imgurl": "http://s.wordpress.org/about/images/wordpress-logo-notext-bg.png",
    "spectitle": "Price",
    "specvalue": "100$"
}
]

Guidance please...

i'm getting thread issue like this

2012-07-20 19:36:03.504 tablevc[2253:f803] 1
2012-07-20 19:36:03.505 tablevc[2253:f803] 2
2012-07-20 19:36:03.507 tablevc[2253:f803] 4
2012-07-20 19:36:03.507 tablevc[2253:f803] 3
2012-07-20 19:36:03.508 tablevc[2253:f803] *** Assertion failure in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:6061
2012-07-20 19:36:03.508 tablevc[2253:f803] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
*** First throw call stack:
(0x13d2022 0x1563cd6 0x137aa48 0x9b32cb 0xb6d28 0xb73ce 0xa2cbd 0xb16f1 0x5ad21 0x13d3e42    0x1d8a679 0x1d94579 0x1d194f7 0x1d1b3f6 0x1d1aad0 0x13a699e 0x133d640 0x13094c6 0x1308d84  0x1308c9b 0x12bb7d8 0x12bb88a 0x1c626 0x2ae2 0x2a55 0x1)
 terminate called throwing an exception

解决方案

I don't see the initialization of tablearray anywhere.

Add this to your viewDidLoad method:

tablearray = [[NSMutableArray alloc] init];

I also see that you're inserting an array within an array. This means that when you need to access the correct data (NSString in your case), you must use the correct index:

cell.textLabel.text=[[tablearray objectAtIndex:indexPath.row] objectAtIndex:1];   

I used "objectAtIndex:1" because the title string is stored at index 1 in the inner array. A better, more generic approach would be to use NSDictionary. For example:

NSDictionary *dict =[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a title", @"more data",nil] forKeys:[NSArray arrayWithObjects:@"titleKey",@"dataKey"]];

Also, make sure your delegate returns the correct amount of sections for your table.

这篇关于UItableviewcontroller 单元格文本标签内容未显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆