在 Swift 中以程式設計方式返回到上一個 ViewController
本文介紹瞭如何使用 Swift 語言以程式設計方式從一個檢視控制器返回到上一個檢視控制器。您將看到一個使用 popViewController 方法返回到上一個控制器的示例。
什麼是 Swift 中的 ViewController?
在 Swift 中,UIViewController 管理使用者介面和邏輯資料之間的互動。它負責處理使用者與使用者介面的互動。該類是 UIKit 框架的一部分,並提供了一些函式和屬性以及生命週期。此類是 iOS 開發中最常用的類。
要返回到上一個檢視控制器,導航控制器為我們提供了一個名為 popViewController(animated: true) 的方法。在 Swift 中,您可以使用以下方法呼叫此方法:
navigationController?.popViewController(animated: true)
在此函式中,透過傳遞一個標誌來啟用或停用返回到上一個控制器的動畫。預設情況下,它處於 true 狀態,並且控制器將以動畫形式彈出。
在此示例中,我們將建立兩個檢視控制器,以便使用以下方法以程式設計方式返回:
步驟 1 - 設定第一個檢視控制器。
步驟 2 - 設定第二個檢視控制器。
步驟 3 - 編寫程式碼以返回到上一個控制器。
設定第一個控制器
在此第一個控制器中,我們將新增一個按鈕,當單擊該按鈕時,將推送一個新的控制器以便返回。以下是設定控制器的程式碼。
示例
import UIKit
class FirstViewController: UIViewController {
private let clickButton = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
initialSetup()
}
private func initialSetup() {
// basic setup
view.backgroundColor = .white
navigationItem.title = "First Controller"
// button customization
clickButton.backgroundColor = .darkGray
clickButton.setTitle("Go to next controller", for: .normal)
clickButton.setTitleColor(.white, for: .normal)
clickButton.layer.cornerRadius = 8
clickButton.addTarget(self, action: #selector(handleClickButtonTapped), for: .touchUpInside)
// adding constraints to button
view.addSubview(clickButton)
clickButton.translatesAutoresizingMaskIntoConstraints = false
clickButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
clickButton.widthAnchor.constraint(equalToConstant: 250).isActive = true
clickButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
clickButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}
@objc private func handleClickButtonTapped() {
}
}
輸出
在上面的程式碼中,handleClickButtonTapped() 函式尚未完成。我們將在該方法內部編寫程式碼以推送第二個控制器,如下所示:
@objc private func handleClickButtonTapped() {
let secondController = SecondViewController()
self.navigationController?.pushViewController(secondController, animated: true)
}
設定第二個控制器
在此步驟中,我們將設定第二個控制器,以便從第一個控制器推送它。還將新增一個按鈕,以便在單擊時返回。
示例
import UIKit
class SecondViewController: UIViewController {
private let backButton = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
initialSetup()
}
private func initialSetup() {
// basic setup
view.backgroundColor = .white
navigationItem.title = "Second Controller"
// button customization
backButton.backgroundColor = .darkGray
backButton.setTitle("Go Back", for: .normal)
backButton.setTitleColor(.white, for: .normal)
backButton.layer.cornerRadius = 8
backButton.addTarget(self, action: #selector(handleBackButtonTapped), for: .touchUpInside)
// adding constraint to button
view.addSubview(backButton)
backButton.translatesAutoresizingMaskIntoConstraints = false
backButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
backButton.widthAnchor.constraint(equalToConstant: 200).isActive = true
backButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
backButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}
@objc private func handleBackButtonTapped() {
}
}
輸出
返回到第一個控制器
在上面的程式碼中,handleBackButtonTapped() 函式尚未完成。我們將在該方法內部編寫程式碼以返回到第一個控制器,如下所示:
@objc private func handleBackButtonTapped() {
navigationController?.popViewController(animated: true)
}
結論
總之,您可以使用 popViewController(animated: true) 函式以程式設計方式導航返回。此函式由 UINavigationController 類提供,用於從導航堆疊中彈出頂部的檢視控制器。
作為引數 animated,該函式接受一個布林值,用於為彈出轉換設定動畫。預設情況下,此引數為 true,併為轉換動畫設定動畫。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP