2016-04-22 10 views
2

I UITableView in UIViewController als Subview hinzugefügt, aber wenn ich einen Haltepunkt an der UITableView Datasource-Methode gesetzt:ein UITableView Objekt benötigen dreimal Initialisierung

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 1; 
} 

Ich finde den Breakpoint dreimal trifft. Warum das?

+0

Es wird nur die Anzahl der Zeilen ausgeführt. Sonst hast du numberOfSections Delegate deklariert, wo du einige von Section angegeben hast. ? –

+0

Haben Sie reloadData überall verwendet? –

+0

@BalajiRamakrishnan I erklärt 1 Abschnitt – windy

Antwort

0

Die Methode, die Sie erwähnen, ist eine Datenquellenmethode und hat nichts mit der Initialisierung zu tun. Dies ist nur eine Methode, die von der Tabellenansicht aufgerufen wird, um zu fragen, wie viele Zeilen in der Tabelle vorhanden sind. Ich wäre nicht allzu besorgt, wie oft die Tabellenansicht die Datenquelle fragt, wie viele Zeilen es in der Tabelle gibt.

Ich nehme an, Sie haben Ihre Tabellenansicht als Unteransicht einer anderen Ansicht mit dem Interface Builder erstellt. Dies ist, wenn Sie die Tabellenansicht initialisieren. Alle Objekte, die mit dem Interface Builder erstellt werden, werden im Interface Builder initialisiert. Xcode archiviert diese Objekte dann während des Kompilierens (Apple nennt es Gefriertrocknen) und zur Laufzeit werden die Objekte aus dem Archiv entfernt.

Während der Archivierung werden die Objekte, die mit dem Interface Builder erstellt wurden, mit ihren Outlets verbunden, auf dem Bildschirm angezeigt usw. Dann führen die Objekte ihre Aufrufe an ihre Delegierten und Datenquellen aus. Dies kann mehr als einmal passieren.

Hoffe, das hilft.

+0

Dank möchte ich einige Details Kein Problem – windy

+0

wissen mögen, Welche Details möchtest du wissen? Welches Problem haben Sie vor Augen, das Sie zu lösen versuchen? – MacUserT