Раскадровки iOS создают экземпляры viewController и IBAction - PullRequest
0 голосов
/ 10 декабря 2011

Я могу сойти с ума очень скоро.

Это причина: - Я начал с одного приложения View View с раскадровками. Затем я устанавливаю имя класса контроллера представления в раскадровке для моего viewController. - Следующий шаг я создал один указатель для этого viewController в методе AppDelegate ... didFinishLaunchingWithOpt ... и заполнил его, вызвав [myStoryboards instantiate ...]. Это работает довольно хорошо, потому что я могу вызвать метод, подобный [vc1 setMyName], который делает что-то вроде self.myName = @ "Johnny"; - Но вот оно. Когда я создаю метод IBAction, соединенный с кнопкой, этот метод ничего не знает о "Johhny". И это потому, что я в другом случае. Когда я проверяю адрес "себя", это другой ...

WhyWhyWhy ??? Пожалуйста, помогите, как я могу использовать все тот же объект - тот, который был создан в AppDelegate раскадровками, и тот, что из раскадровок в "построителе интерфейса".

Спасибо.


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

У меня initialViewController, полученный с помощью вызова rootViewContr ... И еще один, связанный с segue (модальным), где UITableView. Получить данные на rootViewController, и я хочу показать их на другой в списке (UITableView). Поэтому я вызываю segue (executeSegueWithIdentifier), другой контроллер отображается, но список понятен. Потому что метод, который я вызываю, работает с переменной tableView, которая имеет значение null: / Потому что, опять же, я нахожусь в другом объекте. Это потому, что я вызываю метод создания раскадровки ... Как я могу получить точно такой же viewController, с которым я работаю в раскадровке. Это довольно запутанно для меня: /

Я читал кое-что о prepareForSegue и получении указателя с помощью destinationViewController, но это не то, что я хочу. Мне нужен указатель, прежде чем я вызову segue метод и покажу viewController ...

Спасибо.

1 Ответ

4 голосов
/ 10 декабря 2011

Если вы правильно настроили свой начальный контроллер представления в раскадровке, вам не нужно присваивать его свойству windows rootViewController в -applicationDidFinishLaunchingWithOptions:, поскольку это делается автоматически. Похоже, вы создаете второй экземпляр. Чтобы получить доступ к первоначальной настройке экземпляра раскадровкой, просто сделайте это в -applicationDidFinishLaunchingWithOptions:

InitialViewController *viewController = (InitialViewController *)self.window.rootViewController;
viewController.myName = @"Johnny";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...