Создание программного обеспечения NavigationController (Swift)
Я пытаюсь повторить работу над своим программным обеспечением. (Без использования раскадровки)
Я почти закончил, за исключением того, что сделал контроллер навигации вручную.
Я занимаюсь некоторыми исследованиями, но я не могу найти документацию по ее реализации вручную. (Я начал делать приложение в виде приложения с одним представлением)
В настоящее время у меня только 1 диспетчер представлений. И, конечно же, appDelegate
Контроллер навигации будет использоваться на всех страницах приложения.
Если кто-нибудь может помочь мне или отправить ссылку на какую-то соответствующую документацию для этого программно, мы будем очень благодарны.
EDIT:
Я забыл упомянуть об этом в Swift.
Ответы
Ответ 1
Swift 1, 2: приложение func (_ 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 = Имя вашего контроллера nav1.viewControllers = [mainView] self.window!.rootViewController = nav1 self.window?.makeKeyAndVisible()}
Свифт 3+: и Свифт 4+
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()
}
Ответ 2
Я бы рекомендовал запустить 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
}
Ответ 3
Попробуйте это. Это поможет вам использовать навигационный контроллер.
Программное создание UINavigationController в iOS
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];
}
Затем, когда вы хотите нажать другой контроллер представления, просто используйте следующий код для перехода к другому контроллеру представления.
- (IBAction)pushMyProfileView:(id)sender
{
self.myProfileVC = [[MyProfileViewController alloc]initWithNibName:nil bundle:nil];
[appDelegate.navigationController pushViewController:self.myProfileVC animated:YES];
}
Ответ 4
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let storyboard_Secondary = UIStoryboard(name: "Secondary", bundle: nil)
var initialViewController = UIViewController()
let aUser = CommonMethods.loadCustomObject("\(Constants.kUserProfile)") as? User
if aUser?.respCode == 1 {
initialViewController = storyboard_Secondary.instantiateViewController(withIdentifier: "MainTabVC")
UIApplication.shared.statusBarStyle = .lightContent
let navigationController = UINavigationController(rootViewController: initialViewController)
navigationController.isNavigationBarHidden = true
self.window!.rootViewController = navigationController
self.window!.makeKeyAndVisible()
}