ฉันจะตั้งInitialViewController
เป็นกระดานเรื่องราวได้อย่างไร ฉันต้องการเปิดกระดานเรื่องราวของฉันให้มีมุมมองที่แตกต่างกันขึ้นอยู่กับเงื่อนไขบางอย่างซึ่งอาจแตกต่างจากการเปิดตัวสู่การเปิดตัว
ฉันจะตั้งInitialViewController
เป็นกระดานเรื่องราวได้อย่างไร ฉันต้องการเปิดกระดานเรื่องราวของฉันให้มีมุมมองที่แตกต่างกันขึ้นอยู่กับเงื่อนไขบางอย่างซึ่งอาจแตกต่างจากการเปิดตัวสู่การเปิดตัว
คำตอบ:
วิธีการไม่มีตัวควบคุมมุมมองเริ่มต้นจำลอง
ตรวจสอบให้แน่ใจว่าคอนโทรลเลอร์มุมมองเริ่มต้นทั้งหมดมี ID กระดานเรื่องราว
ในกระดานเรื่องราวให้ยกเลิกการเลือกแอตทริบิวต์ "เป็นตัวควบคุมมุมมองเริ่มต้น" จากตัวควบคุมมุมมองแรก
หากคุณรันแอพของคุณ ณ จุดนี้คุณจะอ่าน:
Failed to instantiate the default view controller for UIMainStoryboardFile 'MainStoryboard' - perhaps the designated entry point is not set?
และคุณจะสังเกตเห็นว่าคุณสมบัติหน้าต่างของคุณในตัวแทนแอพอยู่ในขณะนี้ไม่มี
ในการตั้งค่าแอพให้ไปที่เป้าหมายและInfo
แท็บของคุณ Main storyboard file base name
มีค่าของล้าง บนแท็บล้างค่าสำหรับGeneral
Main Interface
นี่จะเป็นการลบคำเตือน
สร้างหน้าต่างและตัวควบคุมมุมมองเริ่มต้นที่ต้องการในapplication:didFinishLaunchingWithOptions:
วิธีการของตัวแทนแอพ:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *viewController = // determine the initial view controller here and instantiate it with [storyboard instantiateViewControllerWithIdentifier:<storyboard id>];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
return YES;
}
didFinishLaunchingWithOptions
ถูกเรียกเมื่อเริ่มต้นแอพในกระบวนการใหม่ หากคุณไปที่หน้าจอหลักและกลับไปที่แอพวิธีนี้จะไม่ถูกเรียกอีกครั้ง (เว้นแต่ iOS จะยุติเนื่องจากข้อ จำกัด ของหน่วยความจำ) ลองหยุดแอพและเปิดใช้งานอีกครั้งจาก IDE ของคุณ หากปัญหายังคงมีอยู่ให้โพสต์ปัญหาไปที่ SO และฉันยินดีที่จะช่วยเหลือเพื่อน
self.window = UIWindow(frame: UIScreen.mainScreen().bounds) var storyboard = UIStoryboard(name: "Main", bundle: nil) var viewController: UIViewController = // self.window!.rootViewController = viewController self.window!.makeKeyAndVisible()
สำหรับผู้ชื่นชอบSwiftทุกคนนี่คือคำตอบของ@Travis ที่แปลเป็นSWIFT :
ทำสิ่งที่@Travisอธิบายก่อนรหัสวัตถุประสงค์ C จากนั้น
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var exampleViewController: ExampleViewController = mainStoryboard.instantiateViewControllerWithIdentifier("ExampleController") as! ExampleViewController
self.window?.rootViewController = exampleViewController
self.window?.makeKeyAndVisible()
return true
}
ExampleViewController
จะเป็นตัวควบคุมมุมมองใหม่เริ่มต้นที่คุณต้องการจะแสดง
ขั้นตอนอธิบาย:
สนุกและการเขียนโปรแกรมมีความสุข!
คุณสามารถตั้งค่า rootViewController ของหน้าต่างคีย์โดยทางโปรแกรม (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
ตัวอย่างเช่น:
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (shouldShowAnotherViewControllerAsRoot) {
UIStoryboard *storyboard = self.window.rootViewController.storyboard;
UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"rootNavigationController"];
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
}
return YES;
}
init()
/ deinit()
รอบ แต่ไม่มีการดำเนินการviewDidLoad()
หรือเริ่มต้นอย่างถูกต้องIBOutlet
-s ตรวจสอบให้แน่ใจว่าโค้ดของคุณพร้อมแล้ว
Swift 3:อัพเดทเป็นรหัสของ @ victor-sigler
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
// Assuming your storyboard is named "Main"
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
// Add code here (e.g. if/else) to determine which view controller class (chooseViewControllerA or chooseViewControllerB) and storyboard ID (chooseStoryboardA or chooseStoryboardB) to send the user to
if(condition){
let initialViewController: chooseViewControllerA = mainStoryboard.instantiateViewController(withIdentifier: "chooseStoryboardA") as! chooseViewControllerA
self.window?.rootViewController = initialViewController
)
}else{
let initialViewController: chooseViewControllerB = mainStoryboard.instantiateViewController(withIdentifier: "chooseStoryboardB") as! chooseViewControllerB
self.window?.rootViewController = initialViewController
)
self.window?.makeKeyAndVisible(
return true
}
คุณสามารถตั้งค่า Navigation rootviewcontroller เป็นคอนโทรลเลอร์มุมมองหลัก แนวคิดนี้สามารถใช้สำหรับการเข้าสู่ระบบอัตโนมัติตามความต้องการของแอปพลิเคชัน
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UIViewController viewController = (HomeController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"HomeController"];
UINavigationController navController = [[UINavigationController alloc] initWithRootViewController:viewController];
self.window.rootViewController = navController;
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
// do stuff for iOS 7 and newer
navController.navigationBar.barTintColor = [UIColor colorWithRed:88/255.0 green:164/255.0 blue:73/255.0 alpha:1.0];
navController.navigationItem.leftBarButtonItem.tintColor = [UIColor colorWithRed:88/255.0 green:164/255.0 blue:73/255.0 alpha:1.0];
navController.navigationBar.tintColor = [UIColor whiteColor];
navController.navigationItem.titleView.tintColor = [UIColor whiteColor];
NSDictionary *titleAttributes =@{
NSFontAttributeName :[UIFont fontWithName:@"Helvetica-Bold" size:14.0],
NSForegroundColorAttributeName : [UIColor whiteColor]
};
navController.navigationBar.titleTextAttributes = titleAttributes;
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
else {
// do stuff for older versions than iOS 7
navController.navigationBar.tintColor = [UIColor colorWithRed:88/255.0 green:164/255.0 blue:73/255.0 alpha:1.0];
navController.navigationItem.titleView.tintColor = [UIColor whiteColor];
}
[self.window makeKeyAndVisible];
สำหรับผู้ใช้ StoryboardSegue
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
// Go to Login Screen of story board with Identifier name : LoginViewController_Identifier
LoginViewController *loginViewController = (LoginViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@“LoginViewController_Identifier”];
navigationController = [[UINavigationController alloc] initWithRootViewController:testViewController];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
// Go To Main screen if you are already Logged In Just check your saving credential here
if([SavedpreferenceForLogin] > 0){
[loginViewController performSegueWithIdentifier:@"mainview_action" sender:nil];
}
ขอบคุณ
เปิด mainstoryboard เลือกมุมมองที่คุณต้องการเริ่มต้นจากนั้นเปิดโปรแกรมอรรถประโยชน์ -> คุณสมบัติ ใต้ปุ่ม "View Controller" คุณจะเห็นปุ่มตัวเลือก "Is initial View Controller" เพียงแค่เลือกมัน
--- เพื่อแก้ไขคำถาม:
อาจเป็นไปได้ที่คุณจะลองทำสิ่งนี้: เขียนวิธีการในส่วน ViewDidLoad ของมุมมอง inital ของคุณและเมื่อวิธีนั้นทำงานเมื่อเรียกใช้แอปพลิเคชัน
สวิฟท์ 5
หากคุณไม่ได้ตั้ง ViewController เป็น ViewController เริ่มต้นในกระดานเรื่องราวคุณต้องทำ 2 สิ่ง:
สุดท้ายคุณสามารถเพิ่มรหัสของคุณใน SceneDelegate:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
// Make sure you set an Storyboard ID for the view controller you want to instantiate
window?.rootViewController = storyboard.instantiateViewController(withIdentifier: identifier)
window?.makeKeyAndVisible()
}
Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set
คำเตือนที่ฉันมีหลังจากที่ฉันตัดสินใจที่จะยกตัวอย่าง VC เริ่มต้นของฉันในรหัส จุดสำคัญเมื่อ @ rs7 บอกว่า "ลบฟิลด์ชื่อสตอรี่บอร์ด" พวกเขาหมายถึงทั้งแถวของการวางแผนไม่ใช่แค่เนื้อหาของฟิลด์เท่านั้น
ฉันไม่คิดว่ามันเป็นไปได้ แต่คุณสามารถมีตัวควบคุมเริ่มต้นหนึ่งตัวซึ่งจะมีตัวแบ่งไปยังตัวควบคุมมุมมองที่แตกต่างกัน ในการเริ่มต้นคุณสามารถตัดสินใจได้ว่าการทำเซ็กเมนต์ใดในการดำเนินการทางโปรแกรม
คุณสามารถตั้งค่าinitial view controller
โดยใช้ตัวสร้างส่วนต่อประสานเช่นเดียวกับโดยทางโปรแกรม
ด้านล่างเป็นวิธีการที่ใช้สำหรับการเขียนโปรแกรม
วัตถุประสงค์ -C:
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; // <storyboard id>
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
return YES;
รวดเร็ว:
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var objMainViewController: MainViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainController") as! MainViewController
self.window?.rootViewController = objMainViewController
self.window?.makeKeyAndVisible()
return true
ฉันสร้างคลาสการเราต์เพื่อจัดการการนำทางแบบไดนามิกและรักษาคลาส AppDelegate ที่สะอาดฉันหวังว่ามันจะช่วยผู้อื่นด้วย
//
// Routing.swift
//
//
// Created by Varun Naharia on 02/02/17.
// Copyright © 2017 TechNaharia. All rights reserved.
//
import Foundation
import UIKit
import CoreLocation
class Routing {
class func decideInitialViewController(window:UIWindow){
let userDefaults = UserDefaults.standard
if((Routing.getUserDefault("isFirstRun")) == nil)
{
Routing.setAnimatedAsInitialViewContoller(window: window)
}
else if((userDefaults.object(forKey: "User")) != nil)
{
Routing.setHomeAsInitialViewContoller(window: window)
}
else
{
Routing.setLoginAsInitialViewContoller(window: window)
}
}
class func setAnimatedAsInitialViewContoller(window:UIWindow) {
Routing.setUserDefault("Yes", KeyToSave: "isFirstRun")
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let animatedViewController: AnimatedViewController = mainStoryboard.instantiateViewController(withIdentifier: "AnimatedViewController") as! AnimatedViewController
window.rootViewController = animatedViewController
window.makeKeyAndVisible()
}
class func setHomeAsInitialViewContoller(window:UIWindow) {
let userDefaults = UserDefaults.standard
let decoded = userDefaults.object(forKey: "User") as! Data
User.currentUser = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! User
if(User.currentUser.userId != nil && User.currentUser.userId != "")
{
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let homeViewController: HomeViewController = mainStoryboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
let loginViewController: UINavigationController = mainStoryboard.instantiateViewController(withIdentifier: "LoginNavigationViewController") as! UINavigationController
loginViewController.viewControllers.append(homeViewController)
window.rootViewController = loginViewController
}
window.makeKeyAndVisible()
}
class func setLoginAsInitialViewContoller(window:UIWindow) {
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let loginViewController: UINavigationController = mainStoryboard.instantiateViewController(withIdentifier: "LoginNavigationViewController") as! UINavigationController
window.rootViewController = loginViewController
window.makeKeyAndVisible()
}
class func setUserDefault(_ ObjectToSave : Any? , KeyToSave : String)
{
let defaults = UserDefaults.standard
if (ObjectToSave != nil)
{
defaults.set(ObjectToSave, forKey: KeyToSave)
}
UserDefaults.standard.synchronize()
}
class func getUserDefault(_ KeyToReturnValye : String) -> Any?
{
let defaults = UserDefaults.standard
if let name = defaults.value(forKey: KeyToReturnValye)
{
return name as Any
}
return nil
}
class func removetUserDefault(_ KeyToRemove : String)
{
let defaults = UserDefaults.standard
defaults.removeObject(forKey: KeyToRemove)
UserDefaults.standard.synchronize()
}
}
และใน AppDelegate ของคุณเรียกสิ่งนี้
self.window = UIWindow(frame: UIScreen.main.bounds)
Routing.decideInitialViewController(window: self.window!)
อีกวิธีการหนึ่งในการใช้Swift 3และSwift 4 ที่มีการหลีกเลี่ยงการใช้กำลังในการหล่อนั้นเป็นเช่นนี้
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard let viewController = storyboard.instantiateViewController(withIdentifier: "YourViewController") as? YourViewController else {
return false
}
self.window?.rootViewController = viewController
self.window?.makeKeyAndVisible()
return true
}
และด้านล่างใช้กับ UINavigationController
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard let viewController = storyboard.instantiateViewController(withIdentifier: "YourViewController") as? YourViewController else {
return false
}
let navigationController = UINavigationController(rootViewController: viewController)
self.window?.rootViewController = navigationController
self.window?.makeKeyAndVisible()
return true
}
ในAppDelegate.swift
คุณสามารถเพิ่มรหัสต่อไปนี้:
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: "YourViewController_StorboardID")
self.window?.rootViewController = vc
self.window?.makeKeyAndVisible()
แน่นอนว่าคุณต้องใช้ตรรกะตามเกณฑ์ที่คุณเลือกตัวควบคุมมุมมองที่เหมาะสม
นอกจากนี้อย่าลืมเพิ่มตัวตน (เลือกกระดานเรื่องราว -> ฉากควบคุม -> แสดงตัวตรวจสอบตัวตน -> กำหนด StorboardID)
ปรับปรุงคำตอบสำหรับ iOS 13 และผู้แทนฉาก:
ตรวจสอบให้แน่ใจว่าในไฟล์ info.plist ของคุณที่คุณเข้าสู่ Application Scene Manifest -> Scene Configuration -> Application Session Role -> Item 0 และลบการอ้างอิงไปยังกระดานเรื่องราวหลักเช่นกัน มิฉะนั้นคุณจะได้รับคำเตือนแบบเดียวกันเกี่ยวกับการไม่สามารถยกตัวอย่างจากกระดานเรื่องราว
นอกจากนี้ให้ย้ายรหัสจากตัวแทนแอปไปยังฉากวิธีมอบสิทธิ์ฉาก (_: willConnectTo: ตัวเลือก :) เนื่องจากนี่คือตำแหน่งที่จัดการเหตุการณ์วงจรชีวิตตอนนี้
ไม่กี่วันที่ผ่านมาฉันได้พบกับสถานการณ์เดียวกัน เคล็ดลับง่าย ๆ แก้ปัญหานี้ได้ ฉันตั้งค่าตัวซ่อนมุมมองเริ่มต้นของฉันก่อนที่จะเปิดตัว 2 หากคอนโทรลเลอร์มุมมองเริ่มต้นเป็นคอนโทรลเลอร์ที่ถูกต้องระบบจะตั้งค่าให้มองเห็นได้ใน viewDidLoad มิฉะนั้นจะมีการทำข้อต่อให้กับคอนโทรลเลอร์มุมมองที่ต้องการ มันทำงานได้อย่างสมบูรณ์แบบใน iOS 6.1 ขึ้นไป ฉันแน่ใจว่าใช้งานได้กับ iOS เวอร์ชันก่อนหน้า
ขอบคุณที่แก้ไขสิ่งนี้ใน AppDelegate:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//Some code to check value of pins
if pins! == "Verified"{
print(pins)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "HomePage", bundle: nil)
let exampleViewController: UINavigationController = mainStoryboard.instantiateViewControllerWithIdentifier("SBHP") as! UINavigationController
self.window?.rootViewController = exampleViewController
self.window?.makeKeyAndVisible()
}else{
print(pins)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let exampleViewController: UINavigationController = mainStoryboard.instantiateViewControllerWithIdentifier("SBUser") as! UINavigationController
self.window?.rootViewController = exampleViewController
self.window?.makeKeyAndVisible()
}
พบวิธีแก้ปัญหาง่ายๆ - ไม่จำเป็นต้องลบ "การตรวจสอบมุมมองเริ่มต้น" ออกจากกระดานเรื่องราวและแก้ไขแท็บข้อมูลโครงการและใช้งานmakeKeyAndVisible
เพียงแค่วาง
self.window.rootViewController = rootVC;
ใน
- (BOOL) application:didFinishLaunchingWithOptions:
rootVC
จากการinstantiateViewControllerWithIdentifier
ถูกต้องหรือไม่
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = mainStoryboard.instantiateViewController(withIdentifier: "storyBoardid") as! ViewController
let navigationController = UINavigationController(rootViewController: vc)
UIApplication.shared.delegate.window?.rootViewController = navigationController
อีกวิธีคือการนำเสนอ viewController
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = mainStoryboard.instantiateViewController(withIdentifier: "storyBoardid") as! ViewController
self.present(vc,animated:true,completion:nil)
ก่อนอื่นคุณต้องสร้างวัตถุของสตอรี่บอร์ดของคุณจากนั้นเปลี่ยนรูท (ถ้าจำเป็น) จากนั้นคุณใช้การอ้างอิงของตัวควบคุมมุมมองเฉพาะซึ่งถูกผลักตัวควบคุมมุมมองปัจจุบัน (ถ้าคุณเปลี่ยนรูท) มิฉะนั้นมันเป็นเพียง
Swift 4, Xcode 9
ในไฟล์AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let firstVC = storyboard.instantiateViewController(withIdentifier: "firstViewController") as! firstViewController
self.window?.rootViewController = firstVC
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if (PreferenceHelper.getAccessToken() != "") {
let initialViewController = storyboard.instantiateViewController(withIdentifier: "your View Controller Identifier")
self.window?.rootViewController = initialViewController
} else {
let initialViewController = storyboard.instantiateViewController(withIdentifier: "your View Controller identifier")
self.window?.rootViewController = initialViewController
}
self.window?.makeKeyAndVisible()
return true
}
/*
use your view Controller identifier must use it doubles quotes**strong text**
Swift 5 หรือสูงกว่า # ให้ตัวควบคุมมุมมองเส้นทางโดยรหัสง่าย ๆ นี้ หากคุณใช้ xcode 11 หรือสูงกว่าการเริ่มต้นครั้งแรกvar window: UIWindow?
ใน AppDelegate
let rootVC = mainStoryboard.instantiateViewController(withIdentifier: "YOURCONTROLLER") as! YOURCONTROLLER
navigationController.setNavigationBarHidden(true, animated: true)
UIApplication.shared.windows.first?.rootViewController = UINavigationController.init(rootViewController: rootVC)
UIApplication.shared.windows.first?.makeKeyAndVisible()
หากคุณไม่ต้องการเปลี่ยนแอปพลิเคชั่น DisFinish คุณสามารถทำเคล็ดลับต่อไปนี้:
ตั้งค่าคอนโทรลเลอร์นำทางเป็นคอนโทรลเลอร์มุมมองเริ่มต้นและกำหนดคลาส 'MyNavigationController' ให้กับมัน จากนั้นคุณสามารถปรับแต่งคอนโทรลเลอร์มุมมองรูทระหว่าง viewDidLoad - มันจะแทนที่คอนโทรลเลอร์มุมมองรูทที่คุณตั้งค่าไว้ในกระดานเรื่องราวของคุณ
class MyNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
if !isLoggedIn() {
viewControllers = [R.storyboard.authentication.loginView()!]
}
}
private func isLoggedIn() -> Bool {
return false
}
}
เลือกตัวควบคุมมุมมองที่คุณต้องการเปิดก่อนและไปที่ตัวตรวจสอบแอตทริบิวต์ ไปที่ฉากเริ่มต้นและตรวจสอบว่าเป็นตัวเลือกมุมมองเริ่มต้น
ตอนนี้จะเป็นตัวควบคุมมุมมองเริ่มต้นของคุณที่จะเปิดขึ้นเป็นครั้งแรกเมื่อเปิดใช้แอปพลิเคชัน