2012-01-08 7 views
4

私のアプリケーションはビューベースのアプリケーションです。 を私のrootViewControllerとして作成する必要があります。 Xcodeのの以前のバージョンでXcode 4.2を使用したInterface BuilderのUIApplicationDelegate

mainWindow我々はできるで名前のXIBファイルがあったが:

  • UIApplicationDelegate
  • UIWindowを接続
  • UIApplicationさんdelegateコンセントに私たちのUIApplicationDelegate実装を接続します
  • UIViewControllerUIWindowrootViewControllerプロパティに接続します。

ただし、このXIBファイルは作成されません(Xcode 4.2)。

カスタムUINavigationControllerを作成し、それをInterfaceBuilderのUIApplicationDelegate実装にどのように接続すればよいですか?ここで

は私UIApplicationDelegate実装に私のコードです:すべての

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    SDWebImageRootViewController *root = [[SDWebImageRootViewController alloc] initWithNibName:nil bundle:nil]; 

    _navigationController = [[[UINavigationController alloc] initWithRootViewController:root] autorelease]; 

    self.window.rootViewController = _navigationController; 

    [[_navigationController navigationBar] setBarStyle:UIBarStyleBlack]; 
    [[_navigationController navigationBar] setTranslucent:YES]; 

    [_window addSubview:[_navigationController view]]; 
} 

答えて

8

まず、はい、あなたはまださえのXcodeの最新バージョンでは、このためにIBを使用することができますので、どこ私はわかりません」それを得るから。

あなたはIBせずにアプリケーションデリゲートを指定する方法を知りたい場合は、それは非常に単純です:

あなたmain方法では、単にUIApplicationMainに4番目のパラメータとしてアプリケーションデリゲートのクラス名を使用します。

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool 
    { 
     int retVal = UIApplicationMain(argc, argv, nil, @"APPLICATION_DELEGATE_CLASS_NAME"); 
     return retVal; 
    } 
} 

実際には、テンプレートからビューベースのアプリケーションを作成すると、Xcode 4.2ではこれがデフォルトで実行されます(静的な文字列は使用されませんが...リファクタリングされるので正直私の提案よりも良いでしょう)組み込みのリファクタリングなどを使用している場合):

NSStringFromClass([AppDelegate class])

あなたのフォローアップの質問に答えるために:気にしないでくださいok , then what should I do ? to connect the UINC outlet in interface ?

を。

まだ私を信じられませんか?ファイン...ここにチュートリアル...それは5つのステップです! ...そして絶対無意味です。

まず、アプリケーションを作成します:アップmain.mオープン

enter image description here

nilで四番目のパラメータを置き換える:

enter image description here

(新しいXIBを作成するか、既存のものを乗っ取ります私はここでやっています)、File's OwnerクラスをUIApplicationにしてください。

enter image description here

次に、ツールボックスからObjectを追加し、UIApplicationDelegateサブクラスにクラスを変更:今すぐ

enter image description here

、ファイルの所有者に戻って切り替えるとにdelegateコンセントを接続あなたが追加したUIApplicationDelegate私がやったことをして、既存のxibをハイジャックしたなら、view参照を削除してください。

enter image description here

今すぐツールボックスからUIWindowを追加します。

enter image description here

今すぐ追加「のUIViewController from the toolbox. This is your customのUIViewController . If you want a UINavigationController or UITableViewController`だけではなく、それを追加します。

enter image description here

カスタムUIViewControllerクラスを使用している場合は、ここではクラスを指定します。

enter image description here

は、あなたのUIViewControllerUIWindowrootViewControllerコンセントを接続します

enter image description here

あなたのUIApplicationDelegateインターフェイスを開き、IBOutletになるようにwindowプロパティを作成または変更してください。

enter image description here

実装に切り替えて、あなたのウインドウとルートビューコントローラを設定任意の「無価値」のコードを削除します。戻ってあなたのXIBに

enter image description here

スイッチ(私はこの簡潔なコードだけで、プログラムの代わりに、IBを通して...私たちがここでやっているすべてを行い...ここに皮肉だ)し、あなたのUIApplicationDelegate年代をフックアップwindowコンセント。 .... pshew完了

enter image description here

enter image description here

今、あなたのターゲットの配置情報で、 "メインインターフェイス" としてあなたのXIBを設定!

+2

+1しかし、私はあなたが皮肉なことに実際に行われることを恐れています。 : – Abizern

+0

大変ありがとう!!私はアプリを拡張する前にこれをしたかった、私はあなたのやったことをやったが、2つの問題:1つは私が変更UIApplicationへのファイルの所有者のクラスは、アウトレットとアクション、2 - 私はNSObjectを追加しました...まだアプリケーション代理店で私の店を認識しません –

+1

@Mc。恋人1 - そうですね、UIApplicationのコンセントではないので、カスタムビューコントローラのアウトレットです。 emを取り除く。後で追加するView Controllerに接続する必要があります。 2 - NSObjectを追加したら、アプリケーションの委任先を指すようにクラスを変更する必要があります。手順を注意深く読んで、各ステップで何をしているのかを理解してください。 – Steve

関連する問題