2010-11-07 18 views
0

我將iPad應用程序放在一起,允許用戶通過虛擬漫遊工作。他們可以通過屏幕向前移動,其中一些按鈕可以用於其他材料,例如視頻或更多信息。多視圖控制器。有最大值嗎?

如果Keynote支持超鏈接,那麼它將非常適合,但因爲它不是我想在Xcode中重新創建遊覽。

我是一個新手,但花時間研究,並有代碼來顯示'幻燈片',並有能力向前和向後移動。幻燈片不再是一個圖像視圖與全屏幕圖形和按鈕的各種選項,一些幻燈片很簡單,沒有什麼比其他的前後,但其他人將有其他鏈接

然而,這樣做以這種簡單的方式意味着我結束了大量的視圖控制器和XIB文件,目前爲75,我知道它必須比任何應用程序都要多。然而,儘管有時在設備上運行而不在模擬器中,它仍然會工作,但它會彈出。

我的問題是一個應用程序中的視圖控制器數量是否有限制,並且會導致不穩定?我知道處理視圖的其他方法,比如將它們放在數組中並將它們推出單個視圖控制器,但這不會爲我定製用於不同內容的幻燈片的靈活性。

我歡迎任何幫助或建議,我希望去了關於以正確的方式發佈了這個問題(其我的第一個)

非常感謝 基隆

的代碼我使用操縱視圖是

-(IBAction)goBack { 
    [self dismissModalViewControllerAnimated:NO]; 
} 

-(IBAction)goForward { 
    Slide5ViewController *screen = [[Slide5ViewController alloc] initWithNibName:nil bundle:nil]; 
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:screen animated:YES]; 
    [screen release]; 
} 

回答

4

基隆,

爲什麼沒有一個「滑動」視圖控制器和僅一個不同的圖像?使用某種數據結構來保存關於每張幻燈片的按鈕,圖像和路徑的信息,然後爲每張幻燈片重複使用相同的視圖控制器?

視圖控制器可以動態加載每個圖像,因爲它在當前可見視圖和下一個實例化之間轉換...應該只能使用1個視圖控制器。

如果您對使用Interface Builder感到滿意,請繼續使用XIB文件將所有內容全部排除。但是,不是將每個「文件所有者」設置爲不同的視圖控制器,而是將它們全部設置爲同一個。然後,在IBAction方法中(當用戶按下按鈕時),使用一些邏輯來說:「我現在在這個視圖上,並且用戶按下了這個按鈕,那麼我應該去下一個按鈕?」

然後,調用像loadNewSlide:的方法可能看起來像這樣的:

- (void) loadNewSlide:(NSInteger)slideNumber 
{ 
    // Make a string with the new XIB name 
    NSString* xibName = [NSString stringWithFormat:@"slide-%d",slideNumber]; 

    // Create the next slide view controller (it doesn't matter if you create a slide view 
    // controller from within another slide view controller, remember, they are all just 
    // objects) 
    SlideViewController *newSlideViewController = [[SlideViewController alloc] initWithNibName:xibName bundle:nil]; 

    // Change the view 
    UIWindow *theWindow = [self.view superview]; 
    [self.view removeFromSuperview]; 
    [theWindow addSubview:newSlideViewController.view]; 

    // Release, the view stack now should be retaining the view controller instead 
    [newSlideViewController release]; 
} 

這將工作變得比運行「模態」與75個視圖控制器(如先前所建議的)更好,因爲這將只保留1一次在內存中滑動 - 無論您目前在看什麼內容 - 然後會及時加載下一張幻燈片以移至該內存。

+0

嗨,謝謝。我想過這條路線,但是新路線沿着我的路線走得更輕鬆,雖然我知道它是真正的基本東西。如果我走你的路線,我將如何處理特定幻燈片的獨特屬性。例如,一張幻燈片會顯示一張機器的圖片,然後點擊該機器的特定部分將會帶您到更詳細的視圖,並從那裏到顯示它正在運行的電影。目前我使用Interface Builder作爲它的視覺非常容易使用,但我需要轉儲,並以編程方式做一切事情? – Bluearms 2010-11-07 13:25:59

+0

感謝您的幫助。我將繼續並實施您的建議。最好的問候 – Bluearms 2010-11-09 11:17:38

0

首先,日誌中有什麼錯誤?

您是否正確實現了視圖控制器的viewDidUnload方法?視圖控制器應該能夠卸載加載的xib。另外,發佈didReceiveMemoryWarning中的數據。其次,使用UINavigationController來處理視圖控制器堆棧而不是模態視圖控制器堆棧可能會更好。您可以隱藏導航欄或自定義它。

+0

你已經提到了我目前沒有做的事情,所以我會去研究它們。感謝指針。 – Bluearms 2010-11-07 13:28:50

相關問題