当前位置:网站首页>Swift - add navigation bar

Swift - add navigation bar

2022-07-05 12:08:00 RRJia


Preface :iOS13 in the future ,APP Lifecycle management of is managed by AppDelegate Turned into AppDelegate and SceneDelegate Two , And SceneDelegate Higher priority , in other words , When the project exists at the same time AppDelegate and SceneDelegate when , What plays a major role is SceneDelegate; When SceneDelegate When there is no , Still by AppDelegate Lifecycle management . therefore , When we add the navigation bar , It can be done from SceneDelegate Starting with , You can also get it from AppDelegate Starting with , Next , Two methods will be introduced respectively . 

  Method 1 : modify SceneDelegate file (SceneDelegate Can be carried out APP Split screen multi window management )

Step one : modify SceneDelegate The file is the following code : 

import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    
    var window: UIWindow?

    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 _ = (scene as? UIWindowScene) else { return }
        
        //  Set the background color of the window to white 
        self.window?.backgroundColor = .white
        //  take “ Custom view controller (ViewController())” Add to “ Navigation controller UINavigationController” in 
        let nav = UINavigationController(rootViewController: ViewController())
        //  Set the of the window “ Root view controller ” For the navigation controller customized above nav
        self.window?.rootViewController = nav
    }

}

Step two : establish ViewController.swift file , Add the following code , there ViewController.swift Is the above SceneDelegate Add to nav Of “ Custom view controller ”.( This step can be rewritten according to personal needs , Here are just examples )

import Foundation
import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //  Set the background color of the navigation bar to gray 
        self.navigationController?.navigationBar.backgroundColor = .gray
        //  Set the title of the navigation bar to “ home page ”
        self.navigationItem.title = " home page "
        
        //  Custom buttons 
        let tableBtn = UIButton(frame: CGRect(x: 100, y: 200, width: 150, height: 50))
        //  Set the background color of the button to green 
        tableBtn.backgroundColor = .green
        //  Set the title of the button to “ Button 1”
        tableBtn.setTitle(" Button 1", for: .normal)
        //  Set the title color of the button to black 
        tableBtn.setTitleColor(.black, for: .normal)
        //  Add click event for button , That is to call clickTableBtn() Method 
        tableBtn.addTarget(self, action: #selector(clickTableBtn), for: .touchUpInside)
        //  Add a button to the view to make it appear 
        self.view.addSubview(tableBtn)      
    }
    
    @objc func clickTableBtn() {
        let vc = TestNavController()
        //  Set the navigation to jump to TestNavController page 
        self.navigationController?.pushViewController(vc, animated: true)
    }
    
}

Step three : establish TestNavController.swift file , And add the following code ( This step can be rewritten according to personal needs , Here are just examples ):

import Foundation
import UIKit

class TestNavController: UIViewController {
    override func viewDidLoad() {
        self.view.backgroundColor = .yellow
    }
}

Method 2 : modify AppDelegate file

Step one : modify AppDelegate The file is the following code : 

class AppDelegate: UIResponder, UIApplicationDelegate {
    
    var window: UIWindow?
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        
        //  take “ Custom view controller (ViewController())” Add to “ Navigation controller UINavigationController” in 
        let nav = UINavigationController(rootViewController: ViewController())
        //  New window 
        self.window = UIWindow(frame: UIScreen.main.bounds)
        //  Set the background color of the window to white 
        self.window?.backgroundColor = .white
        //  Set the of the window “ Root view controller ” For the navigation controller customized above nav
        self.window?.rootViewController = nav
        //  Set the window to the front of the screen 
        self.window?.makeKeyAndVisible()

        return true
    }

}

Step two : establish ViewController.swift file , Add the following code , there ViewController.swift Is the above AppDelegate Add to nav Of “ Custom view controller ”.( This step is exactly the same as step 2 of method 1 , It can be rewritten according to personal needs , Here are just examples )

import Foundation
import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //  Set the background color of the navigation bar to gray 
        self.navigationController?.navigationBar.backgroundColor = .gray
        //  Set the title of the navigation bar to “ home page ”
        self.navigationItem.title = " home page "
        
        //  Custom buttons 
        let tableBtn = UIButton(frame: CGRect(x: 100, y: 200, width: 150, height: 50))
        //  Set the background color of the button to green 
        tableBtn.backgroundColor = .green
        //  Set the title of the button to “ Button 1”
        tableBtn.setTitle(" Button 1", for: .normal)
        //  Set the title color of the button to black 
        tableBtn.setTitleColor(.black, for: .normal)
        //  Add click event for button , That is to call clickTableBtn() Method 
        tableBtn.addTarget(self, action: #selector(clickTableBtn), for: .touchUpInside)
        //  Add a button to the view to make it appear 
        self.view.addSubview(tableBtn)      
    }
    
    @objc func clickTableBtn() {
        let vc = TestNavController()
        //  Set the navigation to jump to TestNavController page 
        self.navigationController?.pushViewController(vc, animated: true)
    }
    
}

Step three : establish TestNavController.swift file , And add the following code :( This step is exactly the same as step 3 of method 1 , It can be rewritten according to personal needs , Here are just examples )

import Foundation
import UIKit

class TestNavController: UIViewController {
    override func viewDidLoad() {
        self.view.backgroundColor = .yellow
    }
}

Step four : Delete... From the project Scene Other relevant codes , Otherwise, the screen will be black ( Referable Xcode Black screen solution

1) Delete SceneDelegate file ;

2) Delete  Info file  ->  Information Property List  ->  Application Scene Manifest   a  

thus , The above two methods can be realized as follows “ Navigation effects ”, As shown in the figure below ​​​​​:

​​​​​​​​

原网站

版权声明
本文为[RRJia]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140533159541.html