1

私はもともとメインNIBですべてを作成したため、この問題が発生していますが、読んだ後、サブビューを使用する方がよいことがわかりました。

AppDelegateにIBActionがあり、サブビューを正常に接続してロードしました。ただし、サブビューのボタンをAppDelegateのIBActionに接続しようとすると、IBActionが「FirstResponder」の下に表示されます。それらは正常に接続されているように見えますが、アプリケーションを実行してもIBActionsはトリガーされません(これは一部のNSLogで確認されていますが、IBActions内のコードのエラーではありません)。私は何が間違っているのですか?

ありがとう!

4

1 に答える 1

1

AppDelegateは、UIApplicationDelegateプロトコルの実装(つまり、のようなメソッドapplicationDidFinishLaunching)や、場合によってはグローバル変数の格納など、非常に特定の項目にのみ使用する必要があります。

IBActionsとその他のアウトレットをそれぞれのViewControllerファイルに保持する必要があります(つまり、ボタンや画像などがあるMyViewController.xibにリンクされているMyViewController.hとMyViewController.mを作成した場合)。次に、必要なインスペクターコントロール(つまり、TouchUpInside)をファイルの所有者にドラッグすることで接続できます。

ビューコントローラをよりよく理解するために読むべきもの:http: //developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

通常、ユーザーに提示するビューごとに一意のビューコントローラーを作成するのが最適です。たとえば、メイン画面と「バージョン情報」または設定画面がある場合、それぞれを独自のViewControllerにします。これは、非表示/表示するサブビュー全体を含む1つのビューを使用するよりも適切に整理するのに役立ち、読み込み時間と一般的なパフォーマンスも向上します。

アプリデリゲートへのアクセスに関するコメントの2番目の質問を更新します。

#import "AppDelegate.h"まず、アプリデリゲートの.hファイル(つまり)を、アプリデリゲートファイルに保存した変数や配列などにアクセスするために使用するViewControllerの.mファイルにインポートする必要があります。アプリデリゲートの.hファイルで作成したオブジェクトをアプリデリゲートの.mファイルで合成して、ゲッターとセッターが作成されるようにします(これらにアクセスできるようにします)。

次に、View Controllerの.mファイルで、使用している方法は次のとおりです。

-(void)someMethod { 
 // here we just create a shortcut to the app delegate called "theAppDelegate"
 YourAppDelegateFileNameHere *theAppDelegate = (YourAppDelegateFileNameHere *)[[UIApplication sharedApplication] delegate];

 // now you can use the dot notation if you wanna access a variable
 int SomeNewInteger = theAppDelegate.someIntegerYouHaveStored;

 // or some array you have stored
 return [theAppDelegate.someArrayYouCreated count]; 
 }

お役に立てば幸いです。

于 2010-06-30T03:59:57.670 に答える