Ahoy!Creazione di un UIView riutilizzabile simile a UITableViewCell
Sto cercando di creare un UIView riutilizzabile (per vari motivi) simile all'implementazione di UITableViewCell utilizzata in UITableViewController. Mi piacerebbe usare la vista riutilizzabile in un UIScrollView, quindi so che non sto cercando di ottenere qualcosa che sia completamente irraggiungibile.
L'implementazione predefinita di questo è:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//declare cell identifier
static NSString *cellIdentifier = @"cell_identifier";
//dequeue cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
//check cell is valid
if(cell == nil)
{
//create a new cell
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}
//
//return cell
return cell;
}
Da questo, vale la pena notare che la cellula viene rimossa dalla coda dal UITableView. Se la cella non è valida, viene creata una nuova cella. La mia domanda è: in che modo questa cella diventa "in coda" per essere riutilizzata in seguito?
Il mio attuale tentato applicazione si presenta così:
- (TestScrollViewCell *)scrollView:(TestScrollView *)_scrollView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//declare cell identifier
static NSString *cellIdentifier = @"cell_identifier";
//dequeue cell
TestScrollViewCell *cell = (TestScrollViewCell *)[scrollView dequeueReusableCellWithIdentifier:cellIdentifier];
//check cell is valid
if(cell == nil)
{
//create a new cell
cell = [[TestScrollViewCell alloc] initWithFrame:CGRectZero];
}
//
//return cell
return cell;
}
Sto pensando che l'aggiunta di un NSMutableDictionary al mio TestScrollView per memorizzare il cellIdentifier e il TestScrollViewCell (UIView) e poi strappando di nuovo fuori sulla base del dizionario la chiave sarebbe un buon inizio ma è davvero una vera implementazione di cellule "riutilizzabili"?
Il problema che posso vedere è che aggiungerei l'UIView a ScrollView che è posizionato in base al frame. La dequamazione di una vista in questo senso non mi consentirà di aggiungere la vista alla vista di scorrimento senza influenzare la prima vista (modificando la cornice) ma sicuramente questo è il modo in cui funzionano UITableViewCells, nonché le intestazioni/i piè di pagina delle sezioni?
Ho guardato allo this implementation che sembra seguire lo stesso percorso che intendevo implementare ma non sono al 100% venduto che questa è una vera implementazione di celle riutilizzabili.
Qualcuno ha avuto fortuna con questo in precedenza? Sto cercando di prendere il comando di Apple su questo, ma oltre a UITableViewCell e MKAnnotationView (MapKit) non ci sono implementazioni accessibili di questo da cui attingere.
Qualsiasi aiuto sarebbe molto apprezzato.