2011-07-11 5 views
2

iOSデベロッパーにはまだまだ新機能です(asp.net/webの背景を持っています)。たとえば、NavigationControllerで始まるアプリケーションを作成しています。私はViewControllerを渡していますが、これはうれしいことですが、すべてが機能していますが、ナビゲーションコントローラに右ボタンを追加する必要があります。私はこのようなViewControllersの1つの中からこれを行っている:iOS:AppDelegateを正しく使用することについて混乱しています

- (void)viewDidLoad 
{ 
UIBarButtonItem *change = [[UIBarButtonItem alloc] initWithTitle:@"CHANGE" style:UIBarButtonItemStylePlain target:self action:@selector(navAlert)]; 

self.navigationItem.rightBarButtonItem = change; 

[change release]; 

[super viewDidLoad]; 
} 

- (void)navAlert 
{ 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"nav pressed" message:@"You pressed the Change button" delegate:nil cancelButtonTitle:@"Yep" otherButtonTitles:nil]; 

[alert show]; 
[alert release]; 
} 

が、私は、各コントローラにそれを行うにはしたくない - このような何かをAppDelegateに行くべきとそこから呼び出すこと?

また、NavigationControllerを使いたくないとします.ViewControllerで設定されたボタンをクリックすることで、AppControllerを解放して新しいものを直接Windowに読み込むためにAppDelegateのコードを使用できますか?これは愚かな質問のビットですが、私は、私はかなり異なる層がどのように関連するか把握していないと思う場合

申し訳ありませんが、どのようなコードは、など

おかげでどのコントローラに提供されています

答えて

4

あなたはでなければなりません。は、インターフェイスに関連するコードをappdelegateの中に入れます。これがViewControllerの目的です。あなたのビューコントローラのすべてに共通する機能がある場合は、UIViewControllerをサブクラス化して(そして、このサブクラスから他のすべてのインスタンスを派生させる)、カテゴリを作成することをお勧めします。

一方、appdelegateは、コアデータコンテキストの設定や、バックグラウンドに入る直前のアプリケーション状態の保存など、アプリのライフサイクルに関係する基本的なイベントを引き起こすのに適しています。

+0

ご清聴ありがとうございます。ちょっと試してみる必要があります。 – Dave

+0

それは確かです!幸運と幸せな学習:) – Toastor

1

viewDidLoadで何をしようとしている場合は、UINavigationControllerに適切な「戻る」ボタンがあります。そのようにする必要はありません。コントローラのtitleプロパティを好きなものに定義するだけです。

self.title = @"CHANGE"; 

またはあなたがappDelegateでそれを設定することができます:コントローラのinit方法は、(そのためにviewDidLoadため、この場合には必要行いませんあなたの他の質問については

controller.title = @"CHANGE"; 

を、最善のことはスタートですビューベースまたはウィンドウベースのプロジェクトテンプレートを使用して最初から作成する

それ以外の場合は、appDelegateから不要な定義済みコントローラをリリースして独自のものを作成することができます。さらに、remo彼らの親からすべてのそれらのコントローラーの見解をヴィング:

[controller.view removeFromSuperview]; 

(ちょうどUiNavigationControllerおそらく、各コントローラの削除およびそのため[self.window addSubview]があなたの代理人にありました)。

とにかく、xibファイルに関連するすべての依存関係を修正する必要があるため、このパスを提案できるかどうかわかりません。

+0

実際には、私はインデックス0に戻ってナビゲーションコントローラをポップすることによってやっているアプリの設定画面の種類にあなたを連れて行く2番目のボタンを持っていた、アラートビットはちょうどいくつか私がテスト中に入れたコード – Dave

+0

あなたはそれを正しくやっています... – sergio