2010-11-07 1 views
0

Я помещаю приложение iPad вместе, что позволяет пользователю прокладывать себе путь через виртуальный тур. Они могут двигаться вперед через экраны, на которых у некоторых будут кнопки для других материалов, таких как видео или дополнительная информация.Контроллеры с несколькими видами. Есть ли максимум?

Если Keynote поддерживает гиперссылки, тогда это было бы хорошо, но, как и нет, я пытаюсь воссоздать тур внутри Xcode.

Я новичок, но потратил время на изучение и наличие кода для отображения «слайдов» и возможности перемещения вперед и назад. Слайды не более того, что изображение с полноэкранным графическим изображением и кнопками для различных опций, некоторые слайды просты и не имеют ничего, кроме спины и вперед, но другие будут иметь дополнительные ссылки.

Однако это делается упрощенным способом означает, что я получаю огромное количество контроллеров представлений и XIB-файлов, в настоящее время на уровне 75, которые, как я знаю, должны быть больше, чем должно быть у любого приложения. Однако он работает, хотя в случаях, когда он запускается на устройстве, а не в симуляторе, он будет бомбить.

Мои вопросы: есть ли ограничение на количество контроллеров представления в одном приложении и будет иметь большое число причиной нестабильности? Я знаю о других способах обработки представлений, таких как наличие их в массивах и выталкивание их из одного контроллера представления, но это не даст мне гибкости при настройке слайдов для другого контента.

Я приветствую любую помощь или совет, и я надеюсь, пошли о публикации этого вопроса в правильном направлении (его мой первый)

Большое спасибо Кирона

код, я использую для манипулирования мнение

-(IBAction)goBack { 
    [self dismissModalViewControllerAnimated:NO]; 
} 

-(IBAction)goForward { 
    Slide5ViewController *screen = [[Slide5ViewController alloc] initWithNibName:nil bundle:nil]; 
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:screen animated:YES]; 
    [screen release]; 
} 

ответ

4

Кирон,

Почему бы не один «слайд» контроллер представления и только другое изображение? Используйте какую-то структуру данных для хранения информации о кнопках, изображениях и путях для каждого слайда, а затем просто продолжайте использовать один и тот же контроллер вида для каждого слайда?

Контроллер представления затем может динамически загружать каждое изображение при его переходе между видимым в данный момент видом и последующим его созданием ... Должно быть возможно использование только одного контроллера вида.

Если вам удобно с помощью Interface Builder, продолжайте использовать файлы XIB, чтобы выложить все. Однако вместо того, чтобы каждый «Владелец файла» устанавливать другой контроллер, установите их все на один. Затем, в ваших методах IBAction (когда пользователь нажал кнопку), используйте некоторую логику, чтобы сказать «Я сейчас нахожусь в этом представлении, и пользователь нажал эту кнопку, так что я должен перейти к следующей?»

Затем вызывается метод как loadNewSlide:, которые могли бы выглядеть следующим образом:

- (void) loadNewSlide:(NSInteger)slideNumber 
{ 
    // Make a string with the new XIB name 
    NSString* xibName = [NSString stringWithFormat:@"slide-%d",slideNumber]; 

    // Create the next slide view controller (it doesn't matter if you create a slide view 
    // controller from within another slide view controller, remember, they are all just 
    // objects) 
    SlideViewController *newSlideViewController = [[SlideViewController alloc] initWithNibName:xibName bundle:nil]; 

    // Change the view 
    UIWindow *theWindow = [self.view superview]; 
    [self.view removeFromSuperview]; 
    [theWindow addSubview:newSlideViewController.view]; 

    // Release, the view stack now should be retaining the view controller instead 
    [newSlideViewController release]; 
} 

Это будет работать гораздо лучше, чем работает «модально» с 75 контроллерах зрения (как ранее предложил), потому что это будет только держать 1 слайд в памяти за раз - независимо от того, что вы сейчас просматриваете, - и затем загрузит следующий слайд как раз вовремя, чтобы перейти к нему.

+0

Привет, спасибо. Я думал об этом маршруте, но, будучи новым, мне было легче спуститься по маршруту, хотя я знаю, что это настоящий базовый материал. Если я возьму ваш маршрут, как бы я обрабатывал уникальные свойства конкретного слайда. Например, слайд покажет изображение части оборудования, и щелчок по определенной части этой машины приведет вас к более подробному виду, а оттуда к фильму, показывающему, что он работает. В настоящее время я использую Interface Builder, поскольку он визуально очень прост в использовании, но мне нужно было бы свалить это и сделать все программно? – Bluearms

+0

Спасибо за помощь. Я собираюсь идти вперед и предлагаю вам предложить. С наилучшими пожеланиями – Bluearms

0

Кулак всего, какая ошибка в журнале?

Вы правильно использовали метод viewDidUnload для контроллеров представлений? Контроллеры просмотра должны иметь возможность выгружать загруженный xib. Кроме того, выведите данные в didReceiveMemoryWarning.

Во-вторых, лучше использовать UINavigationController для обработки стека контроллеров представлений вместо стека контроллеров модальных представлений. Вы можете скрыть панель навигации или настроить ее.

+0

Вы упомянули вещи, которые я сейчас не делаю, я пойду и исследую их. Спасибо за указатели. – Bluearms

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