Решите в коде, какой класс и файл xib загрузить при запуске приложения - PullRequest
1 голос
/ 18 февраля 2010

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

Мое приложение настроено с контроллером панели вкладок, который имеет контроллер naviagion для каждой вкладки.Внутри файла MainWindow.xib я сказал IB использовать класс HomeView.xib и HomeView.Теперь мне нужно проверить, была ли приобретена функция, и загрузить либо HomeView, либо HomeView2.Я не знаю, где в приложении указать naviagionController, какой класс и представление загружать, поскольку я ранее настроил все это в конструкторе интерфейсов.

Могу ли я принять это решение в контроллере HomeViewNavigationController вместо IB, автоматически принимающего это решение для меня?

Заранее спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 20 февраля 2010

Сохраняйте это простым.

В HomeView.xib есть два разных представления, которые вы можете загрузить. Имейте представление UIViewController в xib быть "контейнерным представлением". Сделайте ваш код обнаружения в viewDidLoad вашего контроллера HomeView, а затем добавьте правильный вид как подпредставление.

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (featureWasPaidFor)
    {
        [self.view addSubview:self.homePurchaseView];
    } else {
        [self.view addSubview:self.homeNonPurchaseView];
    }
}
1 голос
/ 18 февраля 2010

Вы устанавливаете xib, который хотите загрузить, в свой Info.plist.Во время запуска система автоматически загрузит этот xib.Несмотря на то, что легко изменить имя xib в файле Info.plist, Apple его отвергнет.

Вот что я бы сделал: не используйте xibs, по крайней мере, для двух упомянутых вами.Вместо этого создайте все в applicationDidFinishLaunching: (NSNotification *) уведомление

- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
   UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

   UITabBarController *t = [[UITabBarController alloc] initWithFrame:NSMakeRect(0, 0, 0, 0)];
   // add the other view controllers

   if(/* check for which xib to load */)
   {
      // change whatever you need to change
   }
   else
   {
      // ...
   }

   [window addSubview:[t view]];
   [window makeKeyAndVisible];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...