2011-08-31 28 views
0

我一直在閱讀關於使用/不使用接口構建器的編程優點/缺點,我想嘗試從頭開始編寫一個應用程序。然而,即使有一個基於窗口的應用程序,它創建了一個xib文件,我想刪除這個但不知道該怎麼做。只是真的需要這個跳躍開始。謝謝!如何啓動一個iphone應用程序,以便它不使用任何nib文件?

+0

可能的重複[加載視圖控制器和視圖層次編程在Cocoa Touch沒有xib](http://stackoverflow.com/questions/809898/loading-a-view-controller-view-hierarchy-programatically-in-可可觸摸 - 無) –

回答

2

從根本上說,你必須指定UIApplicationMain()的的appDelegate(在main.m文件),這是...來自:

int retVal = UIApplicationMain(argc, argv, nil, nil); 

到:

int retVal = UIApplicationMain(argc, argv, nil, @"MyAppDelegate"); 

然後在MyAppDelegate的方法應用程序:didFinishLaunchingWithOptions:您必須手動創建您的用戶界面:

// initialize application's window 
_window = [[UIWindow alloc] initWithFrame:MAIN_FRAME]; 

// activate and display application's window 
[_window makeKeyAndVisible]; 

...等等

+0

這就是我一直在尋找的!謝謝!! – bubbles

+0

@bubbles:你的問題本身並不明確。在你的問題中最初沒有提到你在刪除MainWindow.xib時遇到了問題。一般來說,你只是提到了xib文件。所以請從下次開始提及您的要求。 :) –

0

您可以創建任何項目,並且當您添加新的viewController時,只需取消選中「使用XIB for UserInterface」複選框(如下面顯示紅色箭頭所示)即可。

這將允許您創建沒有XIB的viewControllers。

但你必須把所有的控件編程爲的viewController

enter image description here

不使用它默認自帶的的viewController,並與上面提到的方法添加newViewController。

然後開始使用其分配(alloc)和初始化(init)方法創建您想要的控件,如UIButton,UILabel等,並設置其框架。

然後,您需要根據您的要求設置任何屬性,然後將其作爲子視圖添加到viewwController的主視圖。所以這將是像說動態添加文本字段將是:

UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(150,30,40,24)]; 
txtField.textColor = [UIColor blueColor]; 
[self.view addSubview:txtField]; 

希望這可以幫助你。

+0

我知道這一點。但無論我在創建項目時選擇哪種模板,它都會給我默認的MainWindow.xib作爲起點。我想消除這個,所以我可以更好地理解應用程序如何開始運行以及第一個視圖/窗口如何顯示 – bubbles

+0

@Parth:那是我想寫的另一種方法。你很快大聲笑 – kjiyoung

+0

@泡沫:試試我的方法:D – kjiyoung

0

有辦法少,簡單的人之一: 轉到項目文件導航,尋找

"Supporting Files -> XXX-info.plist", 

再看看這個:

Main nib file base name: 

刪除此。

希望這有助於

0

希望接下來的步驟將是有益的。

  1. 打開ProjectNameInfo.plist文件,然後刪除名爲主要筆尖文件基本名稱(朝向信息屬性列表底部)的屬性。您可以通過點擊選擇它然後按下Delete鍵來刪除一個屬性。

  2. 在Other Sources下,打開main.m,並將調用的最後一個參數從nil更改爲您的應用程序委託類的名稱(例如@「ProjectNameAppDelegate」)。

  3. 待辦事項以下在AppDelegate類didFinishLaunchingWithOptions變化:方法

//獲取屏幕

的Rects

的CGRect screenBounds = [[UIScreen mainScreen]界限];

//分配窗口

m_window = [[ALLOC的UIWindow] initWithFrame:方法screenBounds];

//分配自定義視圖

m_view = [[MyView的頁頭] initWithFrame:方法screenBounds];

//添加視圖並進行窗口可見

[m_window addSubview:m_view]。

[m_window makeKeyAndVisible];

return YES;

- >我從書中學到了iPhone的3D編程:Philip Rideout:O'Reilly出版。

你應該在上面的goole書中找到並閱讀一些頁面以便進一步理解,因爲只有上面的解釋可能不夠。

此外,在完成上述步驟後,您可以在不使用xib的情況下製作任意數量的視圖控制器和視圖...請參閱由Apple提供的各種編程指南文檔。

好運

+0

感謝您的信息!我仍然在搞清楚內存管理的細節。糾正我,如果我錯了,但啓動CGRect screenBounds線自動設置爲autorelease。右: – bubbles

+0

任何由framwork方法返回的東西通常是autorelease。在這種情況下,screenBounds也會發生同樣的情況。如果你想保留它,那麼把它作爲一個財產。 – Mohammad

相關問題