0

我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    WARedeemReward *reward = [self feedForIndexPath:indexPath];

    WARedeemRewardCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellRedeemRewardsType];

    if (cell == nil) {
        cell = [[WARedeemRewardCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellRedeemRewardsType];
    }
    /*How to make sure rewardView model is also initialise once for every cell for row call*/
    if (rewardViewModel == nil) {
        NSString *redeemRewardViewModelType = [[AWPViewFactory sharedInstance] getValue:@"WARewardHistoryViewModel"];
        rewardViewModel = [[NSClassFromString(redeemRewardViewModelType) alloc] initWithReward:reward];

    }
    /*How to make sure rewardView model is also initialise once for every cell for row call*/

    [WARedeemRewardCellDataBinder setData:rewardViewModel forCell:cell];
    cell.selectionStyle = UITableViewCellSeparatorStyleNone;
    return cell;
}

我想以rewardViewModel这样一种方式保持初始化,即每次cellForRowAtIndexPath 调用只初始化一次。可能是细胞的出队。

如果我保留实例变量rewardViewModel,那么它将只初始化一次,并且在下一次迭代中cellForRowAtIndexPath,同一个实例将被一次又一次地重用。

如果我删除实例变量并在其中创建局部变量rewardViewModelcellForRowAtIndexPath那么alloc init每次都会这样做,这是我不想要的。如下所示:

WARewardHistoryViewModel *rewardViewModel;
NSString *redeemRewardViewModelType = [[AWPViewFactory sharedInstance] getValue:@"WARewardHistoryViewModel"];
rewardViewModel = [[NSClassFromString(redeemRewardViewModelType) alloc] initWithReward:reward];

如何为行的单元格中的每次迭代初始化我指定的类一次?

4

1 回答 1

0

reloadData在调用tableView. 在CellForRowAtIndexPath

[WARedeemRewardCellDataBinder setData:[self.yourRewardModelArray objectAtIndex : indexPath.row] forCell:cell];

这将确保您的奖励模型只创建一次。

于 2017-06-14T17:45:53.367 回答