2012-01-18 16 views
2

私は、xibファイルを使用する単純なプログラムをプログラム的に変換してきました。私は要素を1つずつ削除してコードに戻しました。xibファイルを完全に削除できますか?

最終的にファイル全体を削除できますか?それは何か重要なものに使われているのですか?

3つあるようです。

PhoneContent.xib MyView.xib MainWindow.xib

答えて

3

あなたはコード内でレイアウトを再作成した場合、あなたはそれらを削除することができますので、あなたはMyView.xibまたはPhoneContent.xibを必要としません。

MainWindow.xibを削除するには、アプリケーション:didFinishLaunchingWithOptionsメソッドを更新して、ウィンドウとメインビューコントローラをプログラムで設定する必要がありますが、main.mのmain関数を変更する必要があるよりも微妙に設定してください

代わりに、このように見えるの

int main(int argc, char *argv[]) { 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil); 
    [pool release]; 
    return retVal; 
} 

あなたはこのように見えるためにそれをする必要があります:

int main(int argc, char *argv[]) { 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([YourAppDelegate class])); 
    [pool release]; 
    return retVal; 
} 

あなたはよまた、 info.plistファイルからMainWindow(メインnibファイルのベース名)への参照を削除する必要があります。

大丈夫です。だから、あなたのnibファイルを削除する方法を教えてきました。もし私がと答えたら、あなたはそれをやっているのですか?あなたはそれをやっていますか?コードでレイアウトを生成するのは狂気です!それは、JavaScriptでHTMLを生成しようとするか、テキストファイルに16進数の色を指定して画像を生成するようなものです。

いくつかのピクセルを移動するたびにコンパイルして実行する必要がなく、メンテナンスするのがずっと面倒なインターフェイスを利用しています。

レイアウトコードが自動的に生成され、メモリリークや概念的なエラーでいっぱいになる可能性のある手書きコードで置き換えられるため、バグがないことが保証されています。

nibファイルに対して何がありますか?

+0

最近私はいくつかの私のプロジェクトからXIBを取り除いています。なぜなら、私がライブラリプロジェクトでそれを使用したいのであれば、すべてをコードで行う方が簡単だからです。それが一つの理由です。しかし、私はそれがいくつかのUIをプログラマチックに行うのが正しいことに同意します。 – mattjgalloway

+0

基本的に私はちょっとしたスタートアップのために働いています。彼らは私に、コードで完全にニュースフィード型のものを作成するよう依頼しました。コードが完全にコード化されていれば、他のさまざまなプロジェクトに追加することができますが、主に私がそれをしてすべてのものがどのように適合するかを学ぶように求めていると思います。 – SirYakalot

+1

FYIでは、xibファイルをバンドルに含めて静的ライブラリとともに配布することができます。とにかく、イメージと他のアセットにこのアプローチを使用するので、それは本当に負担にはなりません。 initWithNibName:bundle:のバンドル引数を使用して、アプリケーションメインバンドルではなくライブラリバンドルからビューコントローラ用のペン先をロードするように指定することができます。 –

3

はい、すべての.xibファイルを削除できます。あなたはMainWindow.xibの中であなたの窓を初期化することを忘れないで削除した場合、あなたのUIApplicationDelegatedidFinishLaunchingWithOptions:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.window.backgroundColor = [UIColor whiteColor]; 

してから設定したルートビューコントローラ

self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 

もニック・ロックウッドmentioned-チェックmain.mを-as UIApplicationDelegateクラスが設定されている場合、最後に

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
} 

(Xcode4.2で上記のデフォルトで実行)を参照してください、を削除10プロパティは<App>-Info.plistファイルからです。

+0

この行はすでにappDelegateにあります: 'self.window = [[ UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 'まだそれを置き換えるべきですか? – SirYakalot

+0

いいえ、もしあなたがそれを持っていれば、もう何もすることはありません。 –

+0

でも若干違います。同様に、私は次の行も持っています: '[self.window addSubview:contentController.view];/ [window makeKeyAndVisible];' – SirYakalot

3

また、App_infoからメインXIb値を削除する必要があります。plist

関連する問題