2012-06-28 7 views
0

У меня проблема с моим ViewControllers. Их четыре. Вот их последовательность. Извините за именование моих просмотров, это просто пример.Main View Controller


startViewController ------> menuViewController ------> C1ViewController 
              \ 
              \ ------> ImportantViewController 

startViewController мой экран интро, после его окончания, он будет [self presentViewController:vc animated:YES completion:NULL]; в мой menuViewController.

В моих menuViewController есть кнопки для двух ViewController, как показано выше. Кроме того, я представил их в представлении с этим: [self presentViewController:vc animated:YES completion:NULL]; я вернуться к menuViewController с этим [self dismissModalViewControllerAnimated:YES];

То, что я хотел, чтобы сохранить ImportantViewController быть MainViewController-like даже если я пойду другим Views. Я не знаю, можно ли это сделать в ViewController, но не удалитьFromSuperView или просто поместить его за все остальные ViewControllers. Является ли это возможным? И как?

Спасибо.

+0

Удерживать минуту. Таким образом, ваш вопрос: «Как контроллер дочернего представления может вернуть управление своему родителю?»? – Linuxios

+0

Я просто хочу, чтобы ImportantViewController был там все время. – Bazinga

+0

Но видимо все время? – Linuxios

ответ

0

Создать свойство в файле MenuViewController.h, как так ...

#import "ImportantViewController.h" 

@property (nonatomic, strong) ImportantViewController *importantViewController; 

Ключ делает свойство сильной, что означает, что ваш menuViewController будет хранить ссылку на ваш importantViewController И увеличиваем сохранить счетчик за кулисами.

На ваш взгляд сделал нагрузки (или в любом месте, на самом деле), вы можете настроить ваш ImportantViewController ...

@syntheseize importantViewController; 


- (void)viewDidLoad 
{ 
    self.importantViewController = [[ImportantViewController alloc] init]; 
} 

Затем, когда вы будете готовы представить его, сделайте это так:

[self presentViewController:importantViewController Animated:YES]; 

Затем, когда вы в конце концов уволите его, ваш menuViewController все равно будет ссылаться на него, и он не будет освобожден. Затем вы можете снова показать тот же контроллер позже.

Примечание. Это все предполагается, что вы используете автоматический счетчик ссылок (ARC).

+0

Как перезагрузить данные, которые были сохранены как тип обновления? – Bazinga

0

Имейте importantViewController, являющийся начальным контроллером просмотра, и представляйте все остальные виды по тексту. Когда вы хотите переключать виды, вызовите метод rejectModalViewControllerAnimated, а затем представите новый. Это будет работать, если у вас есть текстовые поля или что-то, что вы хотите, чтобы сохранить введенную в них информацию, не сохраняя/загружая ее каждый раз, когда вы показываете представление.

//Inside all view controllers aside from the important one 

    [self dismissModalViewControllerAnimated:YES]; 

Чтобы показать новый контроллер, либо сделать модальное SEGUE к ней и вызывать ее из важного контроллера представления или программным путем вызывать его.