È possibile impostare a livello di codice l'origine dati di UITableViewController?
-
10-07-2019 - |
Domanda
Ho creato un'applicazione usando il modello basato sulla navigazione in Xcode. Ho anche creato una classe che implementa il protocollo UITableViewDataSource e vorrei usarlo per tale UITableView in RootViewController.
Ho provato a impostare la proprietà dataSource in viewDidLoad e in tutti i tipi di inizializzatori, ma non riesco a farlo funzionare.
Come posso farlo?
Attualmente sto facendo quanto segue:
- (void)viewDidLoad {
[super viewDidLoad];
// The Navigation Controller uses this to display the title in the nav bar.
self.title = @"Names";
// Little button with the + sign on the right in the nav bar
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showAddNameScreen)];
// Set the data source and reload.
[self.tableView setDataSource:[DataAcceess sharedInstance]];
[self.tableView reloadData];
}
Ma la tabella rimane vuota e i metodi dell'origine dati non vengono mai chiamati ( numberOfRowsInSection
e cellForRowAtIndexPath
)
Modifica: il mio sharedInstance
era difettoso e restituiva zero. Nessun metodo è mai stato chiamato su di esso.
Soluzione 4
Il problema era che il mio metodo sharedInstance
aveva un bug in cui poteva restituire zero. Poiché l'invio di messaggi a zero viene ignorato in silenzio, nulla è mai stato chiamato nella mia classe.
Altri suggerimenti
Prova
[self.tableView setDataSource:myDataSource];
Dall'interno della sottoclasse UITableViewController (ovvero self
).
Dopo aver impostato l'origine dati, hai chiamato reloadData
per fare in modo che la vista tabella utilizzi la nuova origine dati?
L'origine dati della tabella restituisce un numero di righe diverso da zero?