私は Xcode 4.3.2 で作業しています。
ストーリーボードを使用する代わりに、プログラムで Nib を読み込もうとしています。ストーリーボードはもっとシンプルに見えますが、残念ながら iOS 4 と互換性がなく、下位互換性が必要なアプリケーションを構築しています。
ここに私の問題があります: メイン ビュー (背景が緑色の単純なビュー) を読み込もうとしています。現在、デフォルトのビューはありません。
私のファイルは次のとおりです。
AppDelegate.h/.m GreenViewController.h/.m SwitchViewController.h/.m
アプリの開始時に緑色の画面をロードしたいので、 AppDelegate.m に次のものがあります。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.switchViewController = [[SwitchViewController alloc] initWithNibName:@"GreenView" bundle:nil];
//UIView *switchView = self.switchViewController.view;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
SwitchViewController.m には次のものがあります。
- (void)viewDidLoad
{
self.greenViewController = [[GreenViewController alloc] initWithNibName:@"GreenView" bundle:nil];
[self.view insertSubview:self.greenViewController.view atIndex:0];
[super viewDidLoad];
}
単純な initWithNibName にデフォルト コードを入力します。
GreenViewController.m には次のものがあります。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
これがすべての主な機能です。アプリを実行すると、すぐにエラーが発生します。
2012-10-09 12:34:35.586 MyViewSwitcher[5210:f803] -[AppDelegate setSwitchViewController:]: unrecognized selector sent to instance 0x6c6c310
2012-10-09 12:34:35.587 MyViewSwitcher[5210:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate setSwitchViewController:]: unrecognized selector sent to instance 0x6c6c310'
誰かが私のエラーの原因を理解するのを手伝ってもらえますか? GreenView.xib の「カスタム クラス」が Identity Inspector の「GreenViewController」であることを確認しました。また、「View」の参照元がファイルの所有者であることを確認しました。アプリの起動時に GreenView nib をロードしたいと考えています。最終的にはボタンを追加してビューを切り替えますが、今のところメイン ビューをロードすることさえできていません。何を誤解しているのかわかりません。
助けてくれてありがとう!