2013-02-15 1 views
1

У меня есть приложение для iPhone, которое состоит из двух контроллеров View; основной и один с помощью экрана справки. У каждого из них есть кнопка, которая выполняет отступ от одного к другому.Могу ли я инициализировать что-то в приложении для iPhone с помощью раскадровки вне viewDidLoad?

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

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

ответ

1

на файл класса .m создать логическое значение на @implementaition:

@implementation yourClass{ 

    bool initialize = 0; 
} 

, а затем проверить его на виду сделал груз:

-(void)viewDidLoad{ 

    if(initialize == 0){ 

    //do everything you need to do 

    initialize = 1; 

    } 
} 

Я думаю, что это будет работать ...

+0

Это работает, но теперь у меня другая проблема: у меня есть NSMutableArray из кнопок (созданных динамически), которые связаны с представлением через IBOutletCollection, но когда я перехожу из окна справки назад к основному виду, кнопок больше не существует. Я чувствую, что проблема может заключаться в том, что оба сегмента являются модальными, и в этом случае возникает вопрос, какие типы должны быть такими, чтобы вид справки не вызывал перезапись основного вида? –

+0

Если взгляды находятся на NavigationController, segues должны быть Push. Если нет NavigationController, вы можете использовать Modal. –

+0

Проблема решена - я избавился от раздела Help-> Main segue, создал новый UIViewController, изменил класс справочной панели справки классу нового контроллера представления и создал действие для кнопки возврата справки, которая вызывает функцию rejectModalViewControllerAnimated. –

2

Я предполагаю, что вы делаете «Push» segue (это самый стандартный вид segue, который можно сделать в приложении iOS), и если вы используете «Push» segue, что означает, что у вас есть контроллер навигации в ваше приложение.

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

Это означает, что «viewDidLoad» на этом контроллере открывается только один раз, поскольку основной вид загружается один раз.

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