Je suis maintenant en utilisant ce code:En utilisant la TTLauncherView de Three20: Besoin d'aide avec le fractionnement et l'ajout d'autres objets à partir d'un NSMutableArray à un NSArray en 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];
}
méthode ancienne:
J'utilise le Contrôleur TTLauncherView
de http://three20.info. Three20 est une collection de classes Objective-C qui alimente un nombre croissant d'applications populaires sur App Store. Il fournit des dizaines de fonctionnalités incroyablement utiles qui vous font gagner du temps de développement.
La bibliothèque est conçue pour être modulaire, ce qui signifie que vous pouvez incorporer sélectivement des éléments de la bibliothèque dans votre projet. Il existe également un nombre croissant d'extensions, y compris l'analyse XML et JSON drop-in, ainsi que la prise en charge de la feuille de style CSS pour le traitement de vos applications.
Je ne suis pas tout à fait sûr de savoir comment effectuer les opérations suivantes:
- Vérifiez si mon
arrayOfLauncherItems
a 16 objets qu'il contient; et - S'il y a plus de 16 objets, ajoutez le reste des objets restants à
_launcherView.pages
. Donc, disons qu'il y a un total de 32 objets que je voudrais pouvoir créer un autre tableau des 16 objets restants et les ajouter au_launcherView.pages
NSArray
.
Ceci est un exemple de la façon dont le contrôleur TTLauncherView
fonctionne: ce qui signifie que les TTLauncherItem
objets restants doivent être sur la deuxième page et ainsi de suite
TTLauncherView *_launcherView = [[TTLauncherView alloc] initWithFrame:self.view.bounds];
NSMutableArray *arrayOfLauncherItems = [[NSMutableArray alloc] init];
//add TTLauncherItem objects to arrayOfLauncherItems.
_launcherView.pages = [NSArray arrayWithObjects:arrayOfLauncherItems, nil];
Le arrayOfLauncherItems
peut contenir plus de 16 objets, (en fonction du nombre total d'objets présents). Faire ce qui suit ajoute évidemment les mêmes 16 objets de arrayOfLauncherItems
, ce qui signifie qu'il y a maintenant une deuxième page, ce qui est essentiellement ce que je veux atteindre s'il y a plus de 32 objets dans arrayOfLauncherItems
.
_launcherView.pages = [NSArray arrayWithObjects:arrayOfLauncherItems, arrayOfLauncherItems, nil];
J'ai mis à jour ma question initiale et utilisé votre code. Mais je ne reçois pas les mêmes éléments sur les deux pages. Définissant initWithCapacity sur 2 pour le nombre de pages. Comment puis-je contrôler cela s'il y a plus de pages que deux pour le nombre total d'éléments? – fuzz
Pouvez-vous m'aider avec ce bug? J'utilise votre code mais j'utilise maintenant un columnCount de 3, ce qui me donne un total de 9 catégories par page. Le problème est que le 10ème article ne s'affiche pas. Il ignore simplement le 10ème élément et passe à la page 2, mais il commence à partir de l'élément de la 11ème catégorie. Pourriez-vous me donner un coup de main avec ça? – fuzz
Salut Fulvio, désolé pour le retard, je n'étais pas au courant de votre commentaire. S'il vous plaît voir le code mis à jour si cela fonctionne. –