我有一个从我的webservice收到的数组对象,用于填充UITableView。我正在尝试实现一个从Web服务获取新数组的方法,并重新定义填充表的数组,然后重新加载tableView以使用此数组中的新对象。 这是应该开展工作的方法:
WSCaller *caller = [[WSCaller alloc]init];
arrayFromWS = [caller getArray];
[self.table reloadData];
它不起作用。有什么想法吗?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"productsCellIdentifier";
ProductsCell *cell = nil;
cell = (ProductsCell *)[self.table dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell)
{
NSArray *topLevelObjects = [[NSBundle mainBundle]loadNibNamed:@"ProductsCell" owner:nil options:nil];
for (id currentObject in topLevelObjects)
{
if ([currentObject isKindOfClass:[ProductsCell class]])
{
cell = (ProductsCell *)currentObject;
break;
}
}
}
if (productsMutableArray)
{
cell.backgroundColor = [UIColor whiteColor];
cell.productName.text = [[self.productsMutableArray objectAtIndex:indexPath.row]objectForKey:@"name"];
}
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [productsMutableArray count];
}
答案 0 :(得分:0)
您的数据源实现错误(或至少是片段)。
首先,您没有保留arrayFromWS:
WSCaller *caller = [[WSCaller alloc] init];
arrayFromWS = [caller getArray];
[self.table reloadData];
其次,在你的tableView:numberOfRowsInSection:和tableView:cellForRowAtIndexPath:方法中,你使用的是另一个数组(productsMutableArray)。
要解决这个问题,我建议更改上面的代码(假设您的productsMutableArray是一个强大的/保留属性:
WSCaller *caller = [[WSCaller alloc] init];
self.productsMutableArray = [NSMutableArray arrayWithArray:[caller getArray]];
[self.table reloadData];