2010-10-11 20 views
0

我想做一個通用構建,但我完全以編程方式創建我的UI。如何在沒有xib文件的情況下爲iPhone + iPad開發通用應用程序?

1)我可以將不同的視圖控制器類添加到設備特定的資源目錄嗎?還是必須在兩臺設備上共享課程?

2)如果我必須在兩個設備上共享這些類,根據它是iPhone還是iPad設備,有條件地加載classA或classB的最安全方法是什麼?

+3

將您的用戶界面移到xib中。以編程方式管理差異似乎是一項巨大的開銷,而且由於您已經面臨很多支持iPad的工作,因此您可能會採取這種措施並將UI定義移到更易於管理的地方。作爲評論添加,因爲它不回答你的具體問題。 – dannywartnaby 2010-10-11 08:54:36

+0

+1提供我們可能面臨的問題,如果我們忽略xibs的力量。 – Krishnan 2010-10-11 09:07:53

回答

3

1)您不能在兩個地方添加視圖控制器類,因爲在編譯時相同的符號(即類名)將在兩個地方找到,該應用不會鏈接。 2)我會說最安全的方式是有不同的.xib,但如果你只是想從代碼中工作,你可以創建一個單一的視圖管理器,只做正確的類加載。然後,在您的其他代碼中,您只需要: [MyViewManager sharedInstance] instantiateViewController:kMyDetailsView] 並根據需要顯示視圖。

要確定當前設備,您可以使用類似下面的語句:#define iPad [UIDevice currentDevice].userInterfaceIdiom==UIUserInterfaceIdiomPad。它可以包含在您的前綴文件中,使其可用於整個項目。

1

在每個視圖控制器上,您可以執行設備檢查以查看哪個設備正在運行您的應用程序並據此構建您的UI。即只使用一組視圖控制器,並在* .m文件中,在if-else循環中相應地構建您的UI。

請參閱這篇文章做設備檢查: Determine device (iPhone, iPod Touch) with iPhone SDK

PS:在你的if-else,做一個if(新iPad){}其他{}檢查作爲最佳做法,因爲,很多時候比不了,人們忘記檢查iPod Touch,如果他們這樣做(iPhone){} else {}

+0

順便說一句,這是經過嘗試和測試,它的工作原理,因爲我有一個應用程序商店使用這種技術:) – Sid 2010-10-11 16:27:15

相關問題