2012-01-27 91 views
0

我有一個應用程序,它以閃屏(Default.png)打開,然後將第一個視圖(ViewController1)加載到導航控制器中。馬上,的ViewController2(VC2)的實例被創建,並且推到導航控制器:在從另一個視圖控制器加載視圖控制器時顯示啓動畫面

[self.navigationController pushViewController:VC2 animated:NO]; 

因此,當我運行應用程序時,顯示默認圖像,那麼ViewController1視圖被簡要地顯示,直到ViewController2被加載(然後顯示)。

如何停止ViewController1的簡要顯示?我可以擴展Default.png的顯示直到顯示VC2,或者使用Default.png圖像覆蓋ViewController1,直到VC2顯示?

非常感謝。

+0

您可以添加一個UIImageView與閃屏圖像[窗口addSubview:splashImage];就在執行代碼之前[self.navigationController pushViewController:VC2 animated:YES];然後在VC2的viewDiDAppear – samfisher 2012-01-27 15:57:22

回答

0

您可以使用Default.png將一個UIImageView添加到VC1,然後在viewDidDisappear:中將其刪除。

+0

刪除它如果我只是把一個UIImageView放在VC1(頂部),我得到一個錯誤(SIGABRT),我想因爲VC2訪問它認爲是在VC1的頂視圖的一些數據。任何可以以編程方式解決此問題的方法(可能是通過在VC1中添加UIImageView?) – 2012-01-27 16:58:44

+0

您可以將'UIImageView'放在後面,並將其他視圖的alpha設置爲0,然後將所有alpha值更改爲1'viewDidDisappear :' – 2012-01-27 17:33:44

-1

我不認爲你可以修改Default.png的行爲。我建議你在ViewController1中用Default.png作爲它的圖像創建一個UIImageView。給它與屏幕完全相同的大小,並將其添加爲完全覆蓋它的子視圖。這樣你會看到Deafult.png兩次,然後它會去看ViewController2

1

我認爲你的情況,你想VC2作爲你的起點與VC1作爲你的臨時啓動畫面。 default.png圖片應該是一種反映應用外觀的方式,以便讓您的應用啓動和運行的速度比看起來更快。 (這取自Apple's HIG

您可能需要考慮將VC1設置爲新的splashscreen/loading屏幕。你可以把它變成一個簡單的等待或者加載頁面,然後一旦你的應用程序中的所有內容都被處理完畢,就加載VC2。 Default.png可能是加載屏幕的圖像,並會給你的應用程序馬上加載的印象。

關於如何解決這個問題有很多不同的意見。您最終必須決定哪種方法最適合您和您的應用程序。

最後一個想法是,您可以直接加載到VC2並僅顯示加載進度視圖。當我加載信息或執行他們需要等待的任務時,我已經使用MBProgressHUD鎖定用戶。這可能是另一種選擇。希望這些信息有幫助。

2

如果你想要做的唯一一件事就是顯示VC2不顯示VC1,在你VC1的viewDidLoad方法,你可以做self.view.hidden = YES;然後按下VC2沒有動畫

相關問題