iPhone TableView Daten In 2 Abschnitte
Ich versuche zu bekommen eine tableview, um die geteilten Daten habe ich in ein array in Teile...
Ich bin ziemlich neu in diesem, aber unten ist mein code-snippet
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(section == 0)
{
contentArray = [[NSArray arrayWithObjects:@"Send SMS", @"Reports", nil] retain];
}
if(section == 1)
{
contentArray = [[NSArray arrayWithObjects:@"Accounts", nil] retain];
}
return [contentArray count];
}
Ich haben, teilen Sie die Daten erfolgreich in die 2 Abschnitten, aber beim Auffüllen der Zeilen, die Es nur Wiederholungen der ersten content-array in beiden Sektionen.
Kann einer helfen...
Dank
- Können Sie post-Codes für cellForRowAtIndexPath
- In deinem Beispiel-code, den Sie gehen, um viele Speicher-Leck. Es ist am besten, um das array erstellen in viewDidLoad zum Beispiel. Weil Sie benötigen Zugriff auf das array in ein paar Methoden. Siehe die Antwort von @fluchtpunkt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten Dinge zuerst, Sie haben ein Leck in den code, den Sie präsentiert. Entfernen Sie die beiden Anrufe zu
retain
.Zweiten, Sie sind in das klassische problem, dass Sie mehrere switches/if..else-Ketten auf der Grundlage der gleichen Informationen. Diese Schreie für eine OO-Lösung.
Erstellen Sie zuerst eine TableSection Klasse:
Nun in Ihrem TableViewController
nicht wechseln (und Leck) Ihre content-Daten in einer tableview datasource oder delegieren Methoden.
tableView:numberOfRowsInSection:
aufgerufen werden kann eine beliebige Anzahl von Zeiten. Mit Ihrem code, den Sie verlassen sich auf eine bestimmte Reihenfolge, in der diese Methoden aufgerufen werden.Sollten Sie einen separaten array für jeden Abschnitt (oder ein array, das hält die beiden Abschnitt arrays)
Und man konnte diese arrays in viewDidLoad:
ich nehme an, Sie sollten den code in cellForRowAtIndexPath da, wo Sie sind, schreiben wir es in der Regel fügen Sie die Anzahl der Zeilen in jedem Abschnitt
Müssen Sie sicherstellen, dass die
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Methode ist auch wieder die richtigen Zellen basierend auf Ihren aufteilen der Inhalte-array. Sie tun können, die ähnliche prüfen Sie in der Methode so etwas wie