私は初心者のiOS開発者であり、最近いくつかのAndroidアプリを開発しましたが、iOSの専門用語に精通していません。私の問題を説明させてください。
2つの異なるを使用したいUIViewController
。両方のコントローラーのファイルを作成.h
しました。.m
私の計画は、最初のViewControllerが画面に表示されてから5秒後に最初のViewControllerの上にsecontViewControllerをプッシュすることです。つまり、最初のビューコントローラはスプラッシュスクリーンなどのようなものです。
これが私の貢献です。最初のViewControllerで、次の2つの方法を定義しました(もちろん、そのうちの1つは実装されています)。
-(void) pushSecondController {
SecondViewController *secondController = [[SecondViewController alloc]
initWithNibName: nil
bundle: NULL];
[self.navigationController pushViewController: secondController animated: YES];
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self performSelector: @selector(pushViewController:animated:)
withObject: nil
afterDelay: 5.0f];
}
そして、2番目のViewControllerは次のようになります。
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.title = @"Second Controller";
}
方法のみを変更しましたviewDidLoad
。シミュレーターを実行すると、最初のビューコントローラーが正常に機能し、5秒間待機してクラッシュしました。出力は次のようになります。
2012-08-24 10:46:34.104 NavApplication[20355:f803] -[ViewController pushViewController:]: unrecognized selector sent to instance 0x6e7f780
2012-08-24 10:46:34.107 NavApplication[20355:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController pushViewController:]: unrecognized selector sent to instance 0x6e7f780'
もう1つ質問させてください。との間には違いがあることを私は知っていmethodName
ますmethodName:
。誰かが違いを説明できますか?
どんな助けでもいただければ幸いです。
アップデート:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window makeKeyAndVisible];
[self.window addSubview: self.navigationController.view];
return YES;
}