Wenn Sie tableview als Unteransicht hinzufügen, werden die Daten nicht erneut geladen

Ich habe UITableViewController im Storyboard erstellt, und ich instanziiere es über

self.centerCMController = [self.storyboard instantiateViewControllerWithIdentifier:@"ContextMenu"];
self.centerCMController.delegate = self;
[self.view addSubview:self.centerCMController.view];

Wenn ich später im Code anrufe, rufe ich an

[self.centerCMController.tableView reloadData];

nichts passiert. TableView lädt Daten nicht neu! Ich habe einige Nachforschungen angestellt und festgestellt, ob ich numberOfTtems = 3 vor der Zeile gesetzt habe:

[self.view addSubview:self.centerCMController.view];

Die Tabellenansicht zeigt nur 3 Elemente an. Egal, ob ich später numberOfTtems = 4 ändere, es werden nur die ersten 3 Einträge angezeigt (richtig) ... aber die Anzahl der Zellen wird bis zum Ende der Zeit festgelegt.

Was fehlt mir hier?

BEARBEITEN:

um beschreibender zu sein, habe ich die Delegierten richtig eingestellt sowohl -

(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView and

-

(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

aufgerufen werden, gibt zuerst 1 und das andere numberOfItems zurück, das ist 0 beim Start und 2 beim Reload ... aber -

 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

wird nie gerufen

0
um beschreibender zu sein, setze ich die Delegierten richtig sowohl - (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView und - (NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) -Abschnitt werden aufgerufen, erste gibt 1 und die anderen numberOfItems zurück , das ist 0 bei Start und 2 beim Neuladen ... aber - (UITableViewCell *) TableView: (UITableView *) TableView CellForRowAtIndexPath: (NSIndexPath *) IndexPath wird nie aufgerufen
hinzugefügt der Autor MegaManX, Quelle
Was wichtig ist, ist, was Sie in den Delegate-Methoden für die Tabellenansicht tun, nicht im Storyboard. Zeigen Sie einige davon, z.B. wo Sie diese numberOfItems verwenden.
hinzugefügt der Autor meaning-matters, Quelle

2 Antworten

Die häufigste Ursache für das erneute Laden von Daten besteht darin, dass in der Tabellensicht keine Datenquelle festgelegt ist. Überprüfen Sie die Tabellenansicht im Storyboard, um festzustellen, ob die Datenquelle auf etwas verweist (oft auf den View-Controller, der sie enthält).

Am zweithäufigsten wäre, dass der Ausgang zu der Tabellenansicht, die Sie neu laden möchten, nicht gesetzt ist. Bitte überprüfe das mit NSLog und dann Setup (wahrscheinlich wieder im Storyboard).

Zu guter Letzt ist das Design ungewöhnlich. Es ist häufiger/einfach, einen View-Controller zu haben, der die Tabellenansicht enthält, nicht einen anderen zu instanziieren und dann seine Ansicht zu verschieben.

0
hinzugefügt
Das ist wie ein Dropdown-Menü, das ich gerne auf allen View-Controllern haben möchte ... Und außerdem ist es leicht, es neu zu erstellen. Erstelle ein neues Projekt. Fügen Sie zwei Buttn am unteren Rand hinzu. Eine löst eine Aktion aus, um eine Tabellenansicht hinzuzufügen, und eine andere, um Daten neu zu laden. Eigentlich werde ich das zu openning hinzufügen.
hinzugefügt der Autor MegaManX, Quelle

Ich denke, dein Problem ist, dass du diese Anrufe brauchst:

[[[self centerCMController] tableView] setDelegate:self];
[[[self centerCMController] tableView] setDatasource:self];

Wenn Sie instanziateViewControllerWithIdentifier: ausführen, erstellen Sie einen UIViewController , keinen UITableView . Das Festlegen eines Delegaten sollte also nichts tun, noch hat es eine Datenquelle.

0
hinzugefügt