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.

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top