Ipad второй стартовый экран - PullRequest
0 голосов
/ 27 июля 2011

Мне нравится создавать второй стартовый экран в моем приложении. Моя идея состоит в том, чтобы использовать default.png и загрузить UIView с полноэкранным UIImageView внутри.

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

Кажется, мой супервидение пусто ... Вот кусок кода:

if (self._pdfview == nil)
{
    pdfview *videc = [[pdfview alloc] 
                      initWithNibName:@"pdfview" bundle:nil];
    self._pdfview = videc;
    [pdfview release];
}
// get the view that's currently showing
UIView *currentView = self.view;
// get the the underlying UIWindow, or the view containing the current view
UIView *theWindow = [currentView superview]; 

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

Итак, мой вопрос, как мне создать второй стартовый экран?

Или три стартовых экрана, как в играх, когда я хотел бы упомянуть другую компанию.

1 Ответ

0 голосов
/ 27 июля 2011

Если я правильно понимаю, ваша точка зрения такова, что когда ваша функция выполняется выше с viewDidLoad какого-либо контроллера, theWindow равен нулю, поэтому ваш новый вид (начальный экран) не добавляется к нему.

Несколько наблюдений:

  1. , если theWindow равно нулю, то self.view является верхним UIView;вы можете попробовать заменить его или просто добавить к нему свое представление:

    UIView *currentView = self.view;
    // get the the underlying UIWindow, or the view containing the current view
    UIView *theWindow = [currentView superview]; 
    UIView *newView = _pdfview.view;
    if (theWindow) {
      [currentView removeFromSuperview];
      [theWindow addSubview:newView];
    } else {
      self.view = newView; //-- or: [self.view addSubview:newView];
    }
    
  2. , если вы хотите получить UIWindow своего приложения (что, похоже, вы пытаетесь сделать), вы можете сделать:

    [UIApplication sharedApplication].keyWindow;
    

и оттуда вы можете установить rootViewController (из iOS 4.0)

     [UIApplication sharedApplication].keyWindow.rootViewController = ...;

или добавить newView какподвопрос к нему:

    [[UIApplication sharedApplication].keyWindow addSubview:newView];

во втором случае, возможно, вам следует удалить все subviews, ранее добавленные к UIWindow.(Выполните итерацию по keyWindow.subviews и вызовите removeFromSuperview).

СТАРЫЙ ОТВЕТ:

Я думаю, что вы должны попытаться добавить свой pdfview в качестве подпредставления к текущему представлению:

[currentView addSubview:videc];

или на то, что вы называете theWindow:

[theWindow addSubview:pvidec];

и, пожалуйста, переместите оператор release после `addSubview, иначе представление будетнемедленно освободиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...