【问题标题】:How to make the page transition after clicking the button [duplicate]单击按钮后如何进行页面转换[重复]
【发布时间】:2022-01-10 02:27:40
【问题描述】:

我正在开发一个应用程序来记录孩子们读过的书。所以我想知道点击“保存”按钮后如何让页面转换回菜单页面。我还想发出显示“数据已保存!”的警报。以下是我的代码。

@IBOutlet weak var newBookSaveButton: UIButton!

    @IBAction func newBookTapped(_ sender: Any) {
        guard let uid = Auth.auth().currentUser?.uid,
                      let data = bookData() else {
                          return
                      }
                db.collection("new reading").document(uid).setData(data)
            }
            
        
            func bookData() -> [String: Any]? {
                guard let title = bookTitleTextField.text,
                      let author = bookAuthorTextField.text,
                      let summary = bookSummaryTextField.text else {
                          return nil
                      }
                let data: [String: Any] = [
                    "bookTitle": title,
                    "bookAuthor": author,
                    "bookSummary": summary
                ]
                return data
        
                self.transitionToMenu()
            }
    func transitionToMenu() {
       
        let MenuViewController = storyboard?.instantiateViewController(withIdentifier: Constants.Storyboard.MenuViewController) as? MenuViewController
        
        view.window?.rootViewController=MenuViewController
        view.window?.makeKeyAndVisible()
    }
}

使用此代码,我仍然无法转换回菜单页面。非常感谢您的帮助。

【问题讨论】:

  • 您应该阅读使用 segue 在控制器之间移动的内容,因为这也可以让您轻松导航回父 viewController。 SO Passing data between view controllers 上有一个很好的答案。在发布问题之前做一些研究是个好主意,因为它可能已经被问到了答案。如果这不是你要问的,你能澄清一下这个问题吗?

标签: swift firebase mobile-application


【解决方案1】:

你可以使用这个功能:

func transitionToMenu() {
    let alert = UIAlertController(title: nil, message: "Data has been saved!", preferredStyle: .alert)
    alert.view.alpha = 0.5
    alert.view.layer.cornerRadius = 15
    self.present(alert, animated: true)
    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) {
        alert.dismiss(animated: true)
        if let navController = self.navigationController {
            navController.popViewController(animated: true)
        } else {
            self.dismiss(animated: true, completion: {})
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多