ich diesen Code jetzt bin mit:Three20 des TTLauncherView Verwendung: Need mit Spaltung helfen und das Hinzufügen von verbleibenden Objekten aus einem NSMutableArray zu einem NSArray in Objective-C
- (void)loadLauncher:(NSMutableArray *)categoriesArray {
_launcherView = [[TTLauncherView alloc] initWithFrame:self.view.bounds];
_launcherView.columnCount = 3;
// Number of pages in your launcherView.
NSMutableArray *pages = [[NSMutableArray alloc] initWithCapacity:2];
int numberOfObjects = [categoriesArray count];
// The launcherItems in each page, calculate automatically the number of objects available for the launcher.
NSMutableArray *launcherItems = [[NSMutableArray alloc] initWithCapacity:1];
// The counter to identify if the number of objects exceeds the,
// capacity of a launcher page of 9.
int j = 1;
for (int i = 0; i < numberOfObjects; i++){
if (j > 9){
// Add the current launcherItems array to the pages.
[pages addObject:launcherItems];
// Initialise new launcher items.
launcherItems = [[NSMutableArray alloc] initWithCapacity:1];
// Start the counter again.
j = 1;
} else {
int i = 0;
for (Category *c in categoriesArray) {
NSString *categoryImage = [[NSString stringWithFormat:@"bundle://category_%@_icon.png", [Utility removeSpecialCharacters:@"&'- " withString:c.categoryName]] lowercaseString];
NSLog(@" - %@", categoryImage);
TTLauncherItem *launcherItem = [[[TTLauncherItem alloc] initWithTitle:c.categoryName
image:categoryImage
URL:[NSString stringWithFormat:@"%d", i]
canDelete:NO] autorelease];
[launcherItems addObject:launcherItem];
i++;
}
}
j++;
}
// Add the current launcherItems to the pages.
[pages addObject:launcherItems];
[launcherItems release];
_launcherView.pages = pages;
[self.view addSubview:_launcherView];
}
Alter Methode:
ich bin mit TTLauncherView
Controller von http://three20.info.
Three20 ist eine Sammlung von Objective-C-Klassen, die eine wachsende Anzahl beliebter Anwendungen im App Store antreibt. Es bietet Dutzende von unglaublich nützlichen Funktionen, die Entwicklungszeit sparen.
Die Bibliothek ist modular aufgebaut, dh Sie können Elemente der Bibliothek selektiv in Ihr Projekt integrieren. Es gibt auch eine wachsende Anzahl von Erweiterungen, einschließlich Drop-in-XML- und JSON-Parsing sowie CSS-Stylesheet-Unterstützung für die Thematisierung Ihrer Anwendungen.
Ich bin nicht ganz sicher, wie folgendes zu tun:
- prüfen, ob meine
arrayOfLauncherItems
16 Objekte in sich hat; und - Wenn mehr als 16 Objekte vorhanden sind, fügen Sie den Rest der verbleibenden Objekte zu
_launcherView.pages
hinzu. Wenn also insgesamt 32 Objekte vorhanden sind, möchte ich ein weiteres Array der verbleibenden 16 Objekte erstellen und sie der_launcherView.pages
NSArray
hinzufügen können.
Dies ist ein Beispiel dafür, wie die TTLauncherView
Regler arbeitet:
TTLauncherView *_launcherView = [[TTLauncherView alloc] initWithFrame:self.view.bounds];
NSMutableArray *arrayOfLauncherItems = [[NSMutableArray alloc] init];
//add TTLauncherItem objects to arrayOfLauncherItems.
_launcherView.pages = [NSArray arrayWithObjects:arrayOfLauncherItems, nil];
Die arrayOfLauncherItems
kann mehr als 16 Objekte enthalten, was bedeutet, daß die verbleibenden TTLauncherItem
Objekte auf der zweiten Seite und so weiter sein sollte (abhängig davon, wie viele Gesamtobjekte es gibt).
Das Folgende fügt offensichtlich die gleichen 16 Objekte von arrayOfLauncherItems
hinzu, was bedeutet, dass es jetzt eine zweite Seite gibt, was ich im Wesentlichen erreichen möchte, wenn es mehr als 32 Objekte in arrayOfLauncherItems
gibt.
_launcherView.pages = [NSArray arrayWithObjects:arrayOfLauncherItems, arrayOfLauncherItems, nil];
Ich habe meine ursprüngliche Frage aktualisiert und Ihren Code verwendet. Aber ich bekomme nicht die gleichen Gegenstände auf beiden Seiten. Setzen Sie initWithCapacity außerdem auf 2 für die Anzahl der Seiten. Wie kann ich das kontrollieren, wenn mehr Seiten als zwei für die Gesamtzahl der Elemente vorhanden sind? – fuzz
Können Sie mir mit diesem Fehler helfen? Ich verwende Ihren Code, aber ich benutze jetzt eine columnCount von 3, was mir insgesamt 9 Kategorien pro Seite gibt. Das Problem ist, dass der 10. Artikel nicht angezeigt wird. Es überspringt einfach den 10. Gegenstand und geht auf Seite 2, aber es beginnt mit dem 11. Kategorie-Gegenstand. Würde es dir etwas ausmachen, mir dabei zu helfen? – fuzz
Hallo Fulvio, Entschuldigung für die Verspätung, mir war Dein Kommentar nicht bekannt. Bitte beachten Sie den aktualisierten Code, wenn es funktioniert. –