Я сейчас использую этот код:
- (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];
}
Старый метод:
Я использую контроллер TTLauncherView
из http://three20.info.
Three20 - это коллекцияклассов Objective-C, которые поддерживают растущее число популярных приложений в App Store.Он предоставляет десятки невероятно полезных функций, которые экономят ваше время разработки.
Библиотека построена так, чтобы быть модульной, что означает, что вы можете выборочно включать элементы библиотеки в ваш проект.Существует также растущий набор расширений, в том числе встроенный синтаксический анализ XML и JSON, а также поддержка таблиц стилей CSS для создания тем для ваших приложений.
Я не совсем уверен, как сделать следующее:
- Проверьте, есть ли в моем
arrayOfLauncherItems
16 объектов;и - Если существует более 16 объектов, добавьте оставшиеся объекты к
_launcherView.pages
.Итак, если, скажем, есть всего 32 объекта, я бы хотел иметь возможность создать еще один массив из оставшихся 16 объектов и добавить их в _launcherView.pages
NSArray
.
Этопример работы контроллера TTLauncherView
:
TTLauncherView *_launcherView = [[TTLauncherView alloc] initWithFrame:self.view.bounds];
NSMutableArray *arrayOfLauncherItems = [[NSMutableArray alloc] init];
//add TTLauncherItem objects to arrayOfLauncherItems.
_launcherView.pages = [NSArray arrayWithObjects:arrayOfLauncherItems, nil];
arrayOfLauncherItems
может содержать более 16 объектов, что означает, что остальные объекты TTLauncherItem
должны находиться на второй странице и т. д. (в зависимости ото том, сколько всего объектов).
Выполнение следующего, очевидно, добавляет те же 16 объектов из arrayOfLauncherItems
, что означает, что теперь есть вторая страница, что, по сути, я хочу достичь, если есть больше, чем32 объекта в arrayOfLauncherItems
.
_launcherView.pages = [NSArray arrayWithObjects:arrayOfLauncherItems, arrayOfLauncherItems, nil];