我有一个ViewController,它有一个用Custom Cells生成的TableView。每个Custom Cell都有一个NSDictionary,它可以生成很少的数组。
我希望找到使用[myArray replaceObjectAtIndex:... withObject:...]
指向TableView 中特定单元格的自定义单元格中替换一个数组的方法,前提是我已经知道indexPath 包含该数组的那个单元格。
我必须以某种方式表示Custom Cell indexPath,到达那里并刷新数组。
有没有办法在Objective-C中完成任务?
答案 0 :(得分:0)
如果您知道在每个自定义单元格不同的情况下要更改的单元格的indexPath,则可以使用cellForRowAtIndexPath
调用获取单元格引用。
但我强烈建议通过使用单元格位置作为参考来更改数据模型。由于表视图重用单元格,因此最终会出现意外结果。您应该改变您的表模型,然后重新加载表,或者只重新加载已更改的特定单元格。
答案 1 :(得分:0)
获得单元格的indexPath后,您可以执行以下操作:
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPathOfYourCell, nil] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
答案 2 :(得分:0)
您可以选择重新加载UITableView
UIViewController
说你的桌面视图是这样的
UITableView *tableView
案例1:重新加载整个表格视图 appledoc
[tableView reloadData];
案例2:重新加载某个部分内的所有行 appledoc
[tableView reloadRowsAtIndexPaths:yourIndexPath withRowAnimation: UITableViewRowAnimationNone];
案例3:一次重新加载多个部分 appledoc
tableView reloadSections:yourIndexPathSet withRowAnimation:UITableViewRowAnimationNone];
NB ::必须在 mainThread / gui线程中执行以下任何操作。
答案 3 :(得分:0)
解。
首先,我们需要确保每个自定义单元格都有@property NSInteger cellIndex;
。当tableView填充自定义单元格时,请务必添加cell.cellIndex = indexPath.row;
。这样每个Custom Cell都会使它等于tableView行。
其次,在父viewController中进行更改时,在更新结束时我们会发布通知[[NSNotificationCenter defaultCenter] postNotificationName:@"refreshCollectionView" object:self];
。
第三,在Custom Cell中,我们会收听该通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshCollect) name:@"refreshCollectionView" object:nil];
。触发方法(也包含在自定义单元格中)参考cellIndex:
-(void) refreshCollect {
if (cellIndex == [[[NSUserDefaults standardUserDefaults] valueForKey:@"cellIndex"] intValue]) {
NSURL *newsImgURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.website.com/core/functions/ios/page.news.image?news_id=%@", [[NSUserDefaults standardUserDefaults] valueForKey:@"newsID"]]];
NSData *newsImgData = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:newsImgURL] returningResponse:nil error:nil];
newsImgDict = [NSJSONSerialization JSONObjectWithData:newsImgData options: NSJSONReadingMutableContainers error:nil];
newsImgID2 = [NSMutableArray arrayWithArray: [newsImgDict valueForKey:@"image_id"]];
newsImgTime = [NSMutableArray arrayWithArray: [newsImgDict valueForKey:@"timestamp"]];
newsIDImg = [NSMutableArray arrayWithArray: [newsImgDict valueForKey:@"news_id"]];
newsImgDescr = [NSMutableArray arrayWithArray: [newsImgDict valueForKey:@"description"]];
newsImgExt2 = [NSMutableArray arrayWithArray: [newsImgDict valueForKey:@"ext"]];
} }
在我的情况下,我有NSDictionary,它只为那个特定的自定义单元重建一些数组。