当前位置:网站首页>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 :
边栏推荐
- liunx禁ping 详解traceroute的不同用法
- XML parsing
- 【主流Nivida显卡深度学习/强化学习/AI算力汇总】
- 12.(地图数据篇)cesium城市建筑物贴图
- ABAP table lookup program
- The most comprehensive new database in the whole network, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, flying Book Multidimensional table, heipayun, Zhix
- Multi table operation - Auto Association query
- What is the difference between canvas and SVG?
- Want to ask, how to choose a securities firm? Is it safe to open an account online?
- pytorch-权重衰退(weight decay)和丢弃法(dropout)
猜你喜欢
redis主从模式
Principle of persistence mechanism of redis
Riddle 1
【使用TensorRT通过ONNX部署Pytorch项目】
石油化工企业安全生产智能化管控系统平台建设思考和建议
What is digital existence? Digital transformation starts with digital existence
[mainstream nivida graphics card deep learning / reinforcement learning /ai computing power summary]
Matlab struct function (structure array)
How to make your products as expensive as possible
【 YOLOv3中Loss部分计算】
随机推荐
Troubleshooting of high memory usage of redis in a production environment
Application of a class of identities (vandermond convolution and hypergeometric functions)
Open3d mesh (surface) coloring
13. (map data) conversion between Baidu coordinate (bd09), national survey of China coordinate (Mars coordinate, gcj02), and WGS84 coordinate system
12. (map data) cesium city building map
Network five whip
splunk配置163邮箱告警
想问问,如何选择券商?在线开户是很安全么?
Redis集群的重定向
redis 集群模式原理
谜语1
Course design of compilation principle --- formula calculator (a simple calculator with interface developed based on QT)
Video networkstate property
Solve readobjectstart: expect {or N, but found n, error found in 1 byte of
Proof of the thinking of Hanoi Tower problem
1 plug-in to handle advertisements in web pages
Redis cluster (master-slave) brain crack and solution
Error modulenotfounderror: no module named 'cv2 aruco‘
【yolov5.yaml解析】
手机 CPU 架构类型了解