Я боролся с этим часами. Я искал всюду и просто не могу найти решение моей проблемы. Я почти уверен, что мне просто не хватает некоторых ключевых концепций.Проблема с появлением модального управленияViewController
Мои AppDelegate (didFinishLaunching) в основном устанавливает мое окно и вызывает RootViewController:
// create our window UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; [window setBackgroundColor:[UIColor blackColor]]; // create our rootviewcontroller RootViewController *controller = [[RootViewController alloc] init]; // add our rootviewcontroller's view to our window [window addSubview:controller.view]; // controller is now owned by window's view [controller release]; // show us to the world [window makeKeyAndVisible];
Когда я добавляю controller.view, как подвид окна, я понимаю, что loadView RootVC будет автоматически вызываться.
В RootVC loadView я создаю tabBarController, каждая вкладка имеет navigationController и свой собственный viewController. Все работает нормально.
В RootVC viewDidLoad, я проверяю, если это первый раз, когда пользователь запускает это приложение, и если это так, я хочу выпустить модальный экран приветствия. Это та часть, с которой у меня проблемы.
Я хотел бы, чтобы как можно больше кода из метода viewDidLoad в RootVC, и в идеале могли бы сделать то, что я хочу с этим:
WelcomeViewController *welcome = [[WelcomeViewController alloc] init]; [self presentModalViewController:welcome animated:true]; [welcome release];
Очевидно, что это не работает. Загрузка LoadVC еще не запущена, потому что я явно не задал свойство view. Я играл с кучей различных решений (welcome.view - [[UIView ....], используя метод init для WelcomeVC для установки self.view), но я просто не могу показаться, что этот модальный всплывает.
Как я должен выполнить то, что я ищу? Каковы наилучшие методы, и какое лучшее решение - держать мой код плотным и аккуратным?
Я застрял, поэтому, надеюсь, ваше решение позволит мне продолжить разработку моего приложения!
Не связано с вашим вопросом, я не думаю, что [window addSubview: controller.view] сохранит контроллер вида. – MHC
@MHC - Вы можете уточнить? Почему вы так думаете? Я думал, что всякий раз, когда представление добавляет subview, этот субвью сохраняется. – djibouti33
Подводка сохраняется, но не является ее контроллером. – MHC