2011-09-06 59 views
0

我有一個CoreView應用程序和MainView UITableViewController,其中包含列表中的所有項目。我試圖完成的是添加一個自定義後退按鈕,並使用popToViewController:animated:來訪問設置。當我嘗試使用這種方法時,應用程序崩潰。在做了大量的閱讀後,我意識到push和pop使用視圖控制器的NSArray棧。例如,當您使用pushToViewController:animated:添加到另一個視圖中時,rootView是視圖0,等等。這一切都有道理。我學到的是,你不能彈出到根視圖後沒有加載到堆棧的視圖。我的目標是彈出設置視圖。當我更改AppDelegate.m中的代碼以使SettingsViewController成爲rootViewController時,UITableViewController不再起作用,它不會告訴我實體「enityName」無法初始化。有沒有辦法讓應用程序的CoreData部分仍然正常工作,並仍然彈出設置?我曾想過使用模態視圖,但它破壞了應用程序的風格。CoreData應用程序中的popToViewController

這是很難解釋,如果你不明白任何部分,讓我知道。 感謝您的幫助。

更新:我在UINavigationBar文檔中讀到,您可以使用- (void)setItems:(NSArray *)items animated:(BOOL)animated,從而允許您手動設置推送和彈出視圖控制器的數組。我只是無法弄清楚如何做到這一點。我已經通過蘋果drillDown示例代碼,但它沒有我正在尋找的功能。

回答

1

也許你誤解了蘋果導航控制器的成語。它意味着鑽取視圖的層次結構,並輕鬆直觀地前後移動。

這個層次之外的視圖(看起來你的設置視圖屬於這個類別)應該是模態地呈現。在iPad上,您甚至可以使用漂亮便利的UIPopOverController

當然,如果你想保持自己的外觀和感覺(招致混淆你的用戶的危險),你可以擺弄過渡動畫。你可以使用蘋果自己的,因此預先批准UIModalTransitionStyle財產UIViewController s。

或者你可以嘗試你迄今爲止所做的並且擺弄視圖層次結構。也許你可以簡單地通過順序使用視圖控制器來消除你的錯誤,而不是跳過兩者之間的跳過控制器。在這種情況下,應該足夠使用

[self.navigationController pushViewController:controller animated:YES]; 

[self.navigationController popViewControllerAnimated:YES]; 

,而不是更容易出錯的版本pushToViewControllerpopToViewController

+0

我明白你的觀點。然而,出於某種奇怪的原因,當我嘗試使用UIModalTransitionStyle呈現視圖控制器時,它似乎確實將分組的UITableView拉伸到屏幕邊緣。使用UIPopoverController將是理想的,但我正在編寫一個iPhone應用程序。我將嘗試創建類似於Tapipots UIPopover的UIPopover for iPhone,它可能會解決問題。我只有兩個UISwitch和一個信用屏幕。應該沒問題。感謝您的輸入。真的很感激它。 – Frankrockz

+0

不客氣。請考慮選中標記或者投票。 – Mundi

+0

我打算使用它作爲答案複選標記,但它告訴我必須等待24小時。現在所有完成:) – Frankrockz

相關問題