2010-07-09 3 views
1

Право, это не может быть возможно, но может быть, это ...Добавление UIViewControllers в UIScrollView

У меня есть 3 UIViewControllers, каждый со своими файлами XIb, которые содержат макет для каждого слайда презентации (каждый слайд будет содержать видео, изображения, другие интерактивные элементы). Я подключил их все до UIScrollView, добавляя их по одному, см ниже:

page1 *vc = [[page1 alloc] initWithNibName:@"page1" bundle:nil]; 
vc.view.frame = CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f); 
[sv addSubview:vc.view]; 
[vc release]; 
page2 *vc2 = [[page2 alloc] initWithNibName:@"page2" bundle:nil]; 
vc.view.frame = CGRectMake(1024.0f, 0.0f, 1024.0f, 768.0f); 
[sv addSubview:vc2.view]; 
[vc2 release]; 
page3 *vc3 = [[page3 alloc] initWithNibName:@"page3" bundle:nil]; 
vc.view.frame = CGRectMake(2 * 1024.0f, 0.0f, 1024.0f, 768.0f); 
[sv addSubview:vc3.view]; 
[vc3 release]; 

То, что я хочу быть в состоянии сделать, это создать массив UIViewController и петлю вокруг массива, чтобы добавить их, а чем один за другим. Во-первых, я не могу показаться, чтобы создать массив UIViewControllers, мой код выглядит следующим образом:

NSArray *pages = [[NSArray alloc] initWithObjects:page1, page2, page3, nil]; 

и ошибка: ожидается выражение перед «page1».

мне удалось загрузить в UIViewControllers со следующим кодом:

for (int i = 1; i <= 3; i++) { 
    UIViewController *vc = [[UIViewController alloc] initWithNibName:[NSString   stringWithFormat:@"page%i", i] bundle:nil]; 
    vc.view.frame = CGRectMake((i-1) * 1024.0f, 0.0f, 1024.0f, 768.0f); 
    [sv addSubview:vc.view]; 
    [vc release]; 
} 

Но даже если отображалось содержание от XIBs, функция viewDidLoad из загруженного в UIViewControllers никогда не увольняют.

Итак, есть ли какие-либо подсказки здесь для загрузки массива UIViewControllers в UIScrollView?

Спасибо!

ответ

0

Что такое page1 *vc? Является ли page1 именем вашего настраиваемого класса контроллера вида? Он должен начинаться с буквы верхнего регистра, то есть Page1ViewController *vc.

Вашему массиву нужны экземпляры классов, а не сами классы.

NSArray *pages = [[NSArray alloc] initWithObjects:vc, vc2, vc3, nil]; 

Но тогда, вы не должны выпускать контроллеры просмотра, пока вы не добавили их в массив страниц, т.е. поместить [vc release]; [vc2 release];т.д. после ваш NSArray *pages = ...;

Смежные вопросы