13

いつ、どのような理由で使用する必要があるのか​​わからない[[UIApplication sharedApplication] delegate]

[self.navigationController pushViewController:myView Animation:YES]ナビゲートしないときはデリゲートを使用します。ナビゲーションが正しく機能するようにしますMyView *delegate = [[UIApplication sharedApplication] delegate][delegate pushViewController:myView Animation:YES]

解決策が正しいかどうかはわかりません。また、[[UIApplication sharedApplication] delegate]その用途やアプリケーションへの影響もわかりません。

誰かが私を助けることができますか?

ありがとう!!

4

2 に答える 2

22

[[UIApplication sharedApplication] delegate]アプリのデリゲートへのポインターを提供します。プロジェクトを作成したときに自動的に作成されたもの。通常は という名前YourAppNameAppDelegateです。

あなたのコードには 2 つの点が少し間違っています。

  1. 宣言するときは、またはMyView *delegateのいずれかにする必要があります。id delegateYourAppNameAppDelegate *delegate

  2. アプリ デリゲートを介して、navigationController にアクセスする必要はありません。self.navigationController が失敗する理由を調べて、それに対処します。アプリ デリゲートに依存する場合は、基本的にシングルトン パターンを実装しています。シングルトン パターンは最もクールでないプログラミング デザイン パターンであるため、他のプログラマーと意見を交換する際に、ポイントを獲得することはできません。

于 2010-11-25T13:15:12.820 に答える
4
self.appDelegate = [[UIApplication sharedApplication] delegate];

IVars で appDelegate という変数を作成すると、アプリのデリゲートに自動的に設定されるだけでなく、自分で設定する必要があります。アプリケーションのどこからでも、アプリケーション シングルトンによってデリゲートにアクセスできます。

[UIApplication sharedApplication]<--- シングルトンへのアクセスを与える

デリゲート メソッドは、アプリ デリゲートへのポインターを返します。

したがって、変数を初期化する必要があるため、それを行う論理的な場所が 2 つあります。場所はviewDidLoadにあります。

于 2010-11-25T13:14:08.137 に答える