我正在尝试加载来自webservice的数据UITableView
。一切都很好。但是,当使用UITableView
委托方法在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
中显示记录时,我会获得如下所示的异常 -
这是我的代码 -
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell; //= [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Reuse_Cell"];
UILabel *label = nil;
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
cell.selectedBackgroundView = [[UIView alloc]init];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
label = [[UILabel alloc]initWithFrame:CGRectZero];
[label setLineBreakMode:UILineBreakModeWordWrap];
[label setNumberOfLines:1];
[label setFont:[UIFont fontWithName:@"Trebuchet MS" size:18]];
[label setTag:1];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor blackColor];
[[cell contentView] addSubview:label];
}
if (!label)
label = (UILabel *)[cell viewWithTag:1];
[label setText:[[webserviceRecords objectAtIndex:indexPath.row] objectForKey:@"catName"]];
[label setFrame:CGRectMake(10.0, 5.0, 225.0, 35.0)];
cell.selectedBackgroundView.backgroundColor = RGBACOLOR(151.0, 191.0, 69.0, 1.0);
cell.layer.borderWidth = 2.0f;
cell.layer.borderColor = RGBCOLOR(214, 218, 1).CGColor;
return cell;
}
我的数组记录 -
自定义init
方法
- (id)initwithInteger:(NSInteger )integer
{
self = [super init];
if (self) {
startingpage = integer;
webserviceRecords = [[NSMutableArray alloc]init];
}
return self;
}
NumberofRowsInSection
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"Row count - %d", [webserviceRecords count]);
return [webserviceRecords count];
}
答案 0 :(得分:1)
您在检查单元格是否有值之前设置了单元格selectedBackgroundView
。在执行此操作之前,您应该先检查单元格是否为零。
另外,您可能会发现使用免费的Sensible TableView框架显示数组要容易得多。框架会自动从阵列中生成所有单元格(包括所有详细视图),甚至可以直接从Web服务中获取数据。应该为您节省很多头痛和手工工作。希望这会有所帮助。
答案 1 :(得分:1)
真的是一个愚蠢的错误。我已将JSON
数据直接解析为我的NSMutableArray
我先解析如下 -
webserviceRecords = [NSJSONSerialization JSONObjectWithData:mutableData options:0 error:&error];
而不是这个我已经解决了这个问题 -
NSArray *array = nil;
array = [NSJSONSerialization JSONObjectWithData:mutableData options:0 error:&error];
webserviceRecords = [array mutableCopy];
这有助于我解决我的问题。感谢您回答我的问题。
干杯!