Контроллеры с несколькими представлениями.Есть ли максимум? - PullRequest
0 голосов
/ 07 ноября 2010

Я собираю приложение для 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];
}   

Ответы [ 2 ]

4 голосов
/ 07 ноября 2010

Кирон,

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

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

Если вам удобно использовать 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 голосов
/ 07 ноября 2010

Во-первых, какая ошибка в журнале?

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

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

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