Цель-c: Как создать одно общее фоновое изображение между представлениями в UINavigationController - PullRequest
0 голосов
/ 30 мая 2011

Я пытаюсь создать базовое навигационное приложение, используя UINavigationController в качестве корневого контейнера для других внутренних представлений UIViewController. Я уже достиг аналогичной функциональности с общей панелью инструментов. Мне интересно, это хороший подход, потому что панель инструментов и ее элементы перерисовываются (я думаю?) На каждом внутреннем представлении. Итак, вот некоторые детали моего существующего кода. В моем основном файле реализации MultiviewAppDelegate.m в методе didFinishLaunchingWithOptions я инициализирую UINavigationController, затем инициализирую первое внутреннее представление (UIViewController) и затем добавляю его представление в UINavigationController.

UINavigationController *nc = [[UINavigationController alloc] init];
[self.window addSubview:nc.view]; 
...
FirstView *v1 = [[FirstView alloc] init];
[nc pushViewController:v1 animated:NO];
[nc setToolbarHidden:NO];
...

Все другие внутренние представления (например, FirstView) расширяют класс BaseViewController (BaseViewController расширяет UIViewController), потому что в моем BaseViewController я реализовал общую панель инструментов, которую я хочу видеть во внутренних представлениях. Итак, в методе viewDidLoad класса BaseViewController я делаю создание этой панели инструментов:

- (void)viewDidLoad {  
  UIBarButtonItem *firstViewBtnItem = [[UIBarButtonItem alloc]initWithTitle:@"FirstView"                                                                     style:UIBarButtonItemStyleBordered target:self action:@selector(showFirstView)];  
  UIBarButtonItem *secondViewBtnItem = [[UIBarButtonItem alloc]initWithTitle:@"SecondView"                                                                     style:UIBarButtonItemStyleBordered target:self action:@selector(showSecondView)];
  ...
  NSArray *items = [NSArray arrayWithObjects:firstViewBtnItem, secondViewBtnItem, ..., nil];  
  [firstViewBtnItem release];
  [secondViewBtnItem release];
  [self setToolbarItems:items]; 
  ...

Дело в том, что я не уверен, хорошо ли перерисовывать панель инструментов каждый раз, когда появляется каждый новый внутренний вид. Так что я не уверен, что будет правильным решением сделать то же самое с фоном. Или, может быть, я хочу слишком много:)

1 Ответ

0 голосов
/ 30 мая 2011

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

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