我是iphone开发的新手。我有一个视图控制器,其中包含tableview,对于自定义单元格,uitableviewCell包含喜欢的按钮,如twitter收藏夹按钮。我正在使用AFNETWORKING发送get和post请求,并且响应正在进行中json format.Arse解析json后我在tableview中显示json。我正在下面的json
{ "user_id" = 328; "user_name" = "ios.dev";"user_lname" = "imac";}
{ "user_id" = 318; "user_name" = "ios.dev1";"user_lname" = "imac1";}
{ "user_id" = 358; "user_name" = "ios.dev2";"user_lname" = "imac2";}
{ "user_id" = 328; "user_name" = "ios.dev3";"user_lname" = "imac3";}
{ "user_id" = 338; "user_name" = "ios.dev4";"user_lname" = "imac4";}
tableview单元格上有一个最喜欢的按钮。当我点击按钮时,一些响应来自server.Suppose我点击第一个单元格后发布请求将使用该单元格用户ID并且新响应将来。现在我的问题是如何在当前单元格中显示新的json数据我想修改其他单元格数据,而无需使用新数据重新加载tableview。示例假设我收到响应
{ "user_id" = 328; "user_name" = "iphonefamily";"user_lname" = "iphoneprogram";}
现在我想搜索整个tableview,其单元user_id与newresponse user_id,并希望用新的数据响应替换那些单元格数据。请帮助我。谢谢。
NSArray *tweets=responseobject;
placesArray=[[NSMutableArray alloc]init];
for (NSDictionary *dictionary in tweets) {
TweetData *tweetData=[[TweetData alloc]initWithDictionary:dictionary];
[placesArray addObject:tweetData];
}
[tableview reloadData];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TweetCell *cell=[tableview dequeueReusableCellWithIdentifier:@"TweetCell"];
cell.tweet=[placesArray objectAtIndex:indexPath.row];
cell.delegate=self;
/// cell.tweet=placesArray[indexPath.row];
return cell;
}
这是我用于显示数据的代码。并在自定义单元格- (IBAction)onFavorite:(id)sender {}
内
方法
答案 0 :(得分:0)
您可以将关键userId和indexPath的字典设为值。 然后,当您从服务器获取数据时,从字典中找到相应的索引路径,将其放入数组并使用 [tableView reloadRowsAtIndexPaths:<#(NSArray *)#> withRowAnimation:其中#(UITableViewRowAnimation)#>]
答案 1 :(得分:0)
在获得更新数据的方法中,请执行以下操作:
__block NSInteger indexOfElement;
[placesArray enumerateObjectsUsingBlock:^(TweetData *tweetData, NSUInteger idx, BOOL *stop) {
if (tweetData.userId == newTweetData.userId) {
indexOfElement = idx;
stop = YES;
}
}];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:indexOfElement inSection:0];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
其中newTweetData是包含新数据的对象。
将placesArray的类型更改为NSMutableArray。要替换旧对象
[placesArray replaceObjectAtIndex:indexOfElement withObject:newTweetData];