我一直在尝试以编程方式重做我的应用上的工作。 (不使用故事板)
我差不多完成了,除了手动制作导航控制器。
我一直在做一些研究,但我找不到任何手动实施的文档。 (我开始将应用程序作为单一视图应用程序)
目前,我只有1个viewcontroller。当然还有appDelegate
导航控制器将在应用程序的所有页面中使用。
如果有人可以帮助我,或者以编程方式发送一些正确文档的链接,我们将不胜感激。
编辑:
我忘了在Swift中提到它。
答案 0 :(得分:75)
Swift 1,2:
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 3+:和Swift 4 +
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()
答案 1 :(得分:13)
我建议用这个骨架开始你的AppDelegate:
1)尽可能使用让!
2)UINavigationController具有 rootViewController 属性。
Option Compare Database
Option Explicit
Private Sub cmdShow_Click()
txtOutput.Value = "hello world"
End Sub
Private Sub Form_Load()
txtOutput.Caption = Text
If txtOutput.DefaultValue = Text Then
Me.TimerInterval = 5000
If txtOutput = 0 Then
txtOutput = False
End Sub
Private Sub cmdCheck_click()
Dim guess As Integer
guess = InStr(txtOutput.Value, txtInput.Value)
If guess = 0 Then
txtResult.Value = "You're terrible at this game"
Else
txtResult.Value = "Good find!"
End If
End Sub
答案 2 :(得分:1)
试试这个。它将指导您如何使用导航控制器。
Programatically creating UINavigationController in 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];
}
答案 3 :(得分:1)
这是SceneDelegate类的另一种体现:
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
let navController = UINavigationController()
let viewController = ViewController()
navController.viewControllers = [viewController]
window.rootViewController = navController
self.window = window
window.makeKeyAndVisible()
}
}
答案 4 :(得分:0)
对于那些使用SceneDelegate.swift构建较新项目的人,可以使用“ var window:UIWindow?”在SceneDelegate中,而不是在AppDelegate中删除的“可变窗口”
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window?.windowScene = windowScene
window?.makeKeyAndVisible()
let viewController = ViewController()
let navViewController = UINavigationController(rootViewController: viewController)
window?.rootViewController = navViewController
}
答案 5 :(得分:-1)
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()
}