web-dev-qa-db-ja.com

プログラムによるnavigationControllerの作成(Swift)

私は自分のアプリの作業をプログラムでやり直そうとしています。 (ストーリーボードを使用しない場合)

Navigation Controllerを手動で作成する以外は、ほぼ完了です。

私はいくつかの研究を行ってきましたが、これを手動で実装するドキュメントは見つかりません。 (アプリをシングルビューアプリケーションとして作成し始めました)

現在、ViewControllerは1つしかありません。そしてもちろんappDelegate

Navigation Controllerは、アプリケーションのすべてのページで使用されます。

誰かが私を助けてくれたり、プログラムでこれを行うための適切なドキュメントへのリンクを送ってくれたら、とても感謝しています。

編集:

私はそれがスウィフトにあることを言及するのを忘れました。

45
MLyck

Swift 1、2:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
   self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
   var nav1 = UINavigationController()
   var mainView = ViewController(nibName: nil, bundle: nil) //ViewController = Name of your controller
   nav1.viewControllers = [mainView]
   self.window!.rootViewController = nav1
   self.window?.makeKeyAndVisible()
}

Swift 4+:およびSwift 5 +

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
   self.window = UIWindow(frame: UIScreen.main.bounds)
   let nav1 = UINavigationController()
   let mainView = ViewController(nibName: nil, bundle: nil) //ViewController = Name of your controller
   nav1.viewControllers = [mainView]
   self.window!.rootViewController = nav1
   self.window?.makeKeyAndVisible()
}
81
Jogendra.Com

このスケルトンを使用してAppDelegateを起動することをお勧めします。

1)let可能な限り使用してください!

2)UINavigationControllerにはrootViewControllerプロパティがあります。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    let viewController = ViewController(nibName: nil, bundle: nil) //ViewController = Name of your controller
    let navigationController = UINavigationController(rootViewController: viewController)

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    self.window?.rootViewController = navigationController
    self.window?.makeKeyAndVisible()

    return true
}
14
telenaut

これを試してみてください。 Navigation Controllerの使用方法を説明します。

iOSでUINavigationControllerをプログラムで作成

AppDelegate.h

    #import <UIKit/UIKit.h>
    #import "LoginViewController.h"

    @interface AppDelegate : UIResponder <UIApplicationDelegate>

    @property (strong, nonatomic) UIWindow *window;
    @property (strong,nonatomic) UINavigationController *navigationController;
    @property (strong,nonatomic) LoginViewController *loginVC;

    @end

AppDelegate.m

    #import "AppDelegate.h"
    #import "LoginViewController.h"

    @implementation AppDelegate

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

   self.loginVC = [[LoginViewController alloc]initWithNibName:nil bundle:nil];
   self.loginVC.title = @"Login Page";

   self.navigationController = [[UINavigationController alloc]initWithRootViewController:self.loginVC];

   self.window.rootViewController = self.navigationController;
   [self.window makeKeyAndVisible];
  }

次に、他のView Controllerをプッシュする場合、次のコードを使用して別のView Controllerに移動します。

- (IBAction)pushMyProfileView:(id)sender
{
    self.myProfileVC = [[MyProfileViewController alloc]initWithNibName:nil bundle:nil];
    [appDelegate.navigationController pushViewController:self.myProfileVC animated:YES];
}
1
Hardik Shekhat