最近、アプリのチュートリアルに取り組んでいます。このチュートリアルでチュートリアルを作成しました:
http://www.appcoda.com/uipageviewcontroller-tutorial-intro/
rootViewController
ユーザーを、この場合は に戻す「ボタン」を作成しましたTabBarController
。問題は次のとおりです。このチュートリアルでは、チュートリアル用に追加のストーリーボードを作成しました。rootViewController(TabBarController)
では、ボタンで元に戻すにはどうすればよいでしょうか。
コード:
- (IBAction)start:(id)sender {
UIViewController* backToRootViewController = [[UIViewController alloc] initWithNibName:@"TabBarController" bundle:[NSBundle mainBundle]];
[self.view addSubview:backToRootViewController.view];
}
これもうまくいかない
- (IBAction)start:(id)sender {
[self.navigationController popToRootViewControllerAnimated:YES];
}
編集
初回起動時にチュートリアルを開くには:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
BOOL isAccepted = [standardUserDefaults boolForKey:@"iHaveAcceptedTheTerms"];
if (!isAccepted) {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[APPViewController alloc] initWithNibName:@"APPViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
}
APPViewController
チュートリアルです
編集
johnnelm9r の助けを借りて、現在のコードは次のようになります。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"main" bundle: nil];
IntroViewController *introViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"IntroViewController"];
BOOL isAccepted = [standardUserDefaults boolForKey:@"iHaveAcceptedTheTerms"];
if (!isAccepted) {
[self.window.rootViewController presentViewController:introViewController animated:NO completion:nil];
}
しかし、悲しいことに、アプリがクラッシュし、エラーは次のとおりです。
Application tried to present a nil modal view controller on target <UITabBarController: 0x175409d0>.'
また、警告:Incompatible pointer type assigning to 'ViewController' from 'UIViewController' in AppDelegate