2017-06-14 5 views
0

Mein Code zu initialisieren. So etwas wie die Auslagerung der Zelle.Wie meine bezeichneten Klasse einmal für jede Iteration in der Zelle für Zeile

Wenn ich Instanzvariablen halten rewardViewModel dann wird es nur einmal, und in der nächsten Iterationen von cellForRowAtIndexPath, gleiche Instanz initialisiert werden werden immer wieder verwendet.

Wenn ich Instanzvariable entfernen und lokale Variable rewardViewModel in cellForRowAtIndexPath mache, dann wird es alloc init jedes Mal, die ich nicht will. So etwas wie unten:

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

Wie initiiere ich meine designierte Klasse einmal für jede Iteration in Zelle für Zeile?

+0

Ich sage nicht, dass es eine saubere Lösung wäre, aber als eine poc Idee würde das Hinzufügen von Modelleigenschaft zu Ihrer Zellklasse das Problem nicht lösen? –

+0

@ Kamil.S Danke, aber das wird meinen Zweck meiner sauberen Zelle Unterklasse brechen. Ich hatte das getan und das funktionierte. – Alok

Antwort

0

Erstellen Sie ein Array von rewardViewModel genau wie Ihre Datenquelle, bevor Sie reloadData auf Ihrem tableView aufrufen. In CellForRowAtIndexPath

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

Dadurch wird sichergestellt, sind Ihre Belohnung Modelle nur einmal erstellt.

Verwandte Themen