同じファイル MainWindow.xib にすべてのビューを持つユニバーサル アプリケーションがあります。今日、これらのビューをそれぞれの xib ファイルに分割することにしました (たとえば、MainMenuController.h、MainMenuController.m、および MainMenuController.xib を含めるため)。IBActions を受信できなくなりました。これが私が段階的に行ったことです:
MainMenuController.xib という名前の新しい .xib ファイルを作成し、そのファイルの所有者を既存の MainMenuController クラスに設定しました。
MainMenuController に対応するビューを MainWindow.xib ファイルからコピーし、新しく作成した MainMenuController.xib に貼り付けました。ファイルの所有者のビューを新しく貼り付けたビュー (IB に接続) に設定しました。
info.plist で、「メインの xib ファイルのベース名」のエントリを削除したため、アプリは自動的に MainWindow.xib で開きません。
プログラムでウィンドウを作成するようにアプリ デリゲートを変更し、次のコードで MainMenuController をウィンドウに追加します。
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; mainMenuController = [[MainMenuController alloc] init]; self.window.rootViewController = mainMenuController; [self.window makeKeyAndVisible]; [mainMenuController release];
「mainMenuController」と「window」はインスタンス変数で、プロパティとしても宣言されています。
AppDelegate クラスは 1 つしかなく、main.m には以下が含まれます。
int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}
アプリケーションが開くと、MainMenuController のビューが表示されます。この時点で、新しい xib ファイルの貼り付けられたビューで IBOutlets と IBActions の接続を開始しました。File's Owner に IBOutlets が表示され、正しく接続されていますが、ボタンを押しても IBAction の関数が呼び出されません。
私の頭に浮かんだ可能性のあるエラー: (1) アプリケーション ウィンドウが正しく設定されていない、イベントが渡されない、(2) ビューのコピー中に何かがスタックまたは失われ、まだ古い所有者を指している (3) 何かがスタックしているxcode プロジェクト
問題は何だと思いますか?上記のいずれかですか?どうすればこれを解決できますか? どんな助けでも大歓迎です。
前もって感謝します。