2011-07-27 115 views
0

我喜歡在我的應用程序中創建第二個啓動屏幕。 我的想法是使用default.png並加載一個UIView與全屏UIImageView裏面。ipad第二次啓動屏幕

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是該行後空的,所以這可能是爲什麼沒有加載其他視圖的原因。

所以我的問題,我如何創建第二個開始屏幕?

或三個首發屏幕,就像遊戲中我喜歡提及另一家公司一樣。

回答

0

如果我理解正確,你的觀點是當你的某個控制器的viewDidLoad執行上面的函數時,theWindow是零,所以你的新視圖(startscreen)不會被添加到它。

幾個觀察結果:

  1. 如果theWindow是nil,則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]; 
在第二種情況下

,你應儘可能除去先前添加到UIWindow所有subviews。 (在keyWindow.subviews上迭代並調用removeFromSuperview)。

OLD答:

我認爲你應該嘗試作爲一個子視圖當前視圖添加pdfview

[currentView addSubview:videc]; 

,或者你叫什麼theWindow

[theWindow addSubview:pvidec]; 

請移動release聲明'addSubview,否則視圖wi將立即釋放。

+0

mmm ty爲您的答案,加載任何視圖不是我的問題。問題是創建第二個啓動畫面,並帶有任何圖片。 – Ferdi

+0

我不知道我理解你。要創建第二個啓動畫面,您必須執行的操作是加載圖像或筆尖,然後將其顯示在當前視圖的頂部。做到這一點的方法是使用'addSubview'。在你的代碼中,你加載了'videc',但是你不會對它做任何事情,即你不試圖顯示它...... – sergio

+0

我稱這個函數爲加載另一個xib。 – Ferdi