【问题标题】:Going back to the previous page programatically以编程方式返回上一页
【发布时间】:2019-01-06 02:34:36
【问题描述】:

enter image description here我正在为我的 IOS 应用创建一个用户登录页面。我正在尝试以编程方式制作所有内容,而无需在主故事板上使用 segue。正如您在代码中看到的那样,我已成功进入下一页并创建了一个自定义的左后栏项目。但是当我点击那个按钮时,我不知道如何回到第一页。我在下面附上了我的故事板和应用程序的屏幕截图。您能告诉我如何通过单击 X 按钮返回到第一页吗? 这是我的代码:

导入 UIKit

类 FirstPage: UIViewController {

let hgt = UIScreen.main.bounds.height/2


private let loginSignup: UIButton = {
    let button = UIButton(type: .system)
    button.setTitle("Login or Sign Up", for: .normal)
    button.translatesAutoresizingMaskIntoConstraints = false
    button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 20)
    button.setTitleColor(.green, for: .normal)
    button.addTarget(self, action: #selector(loginSignupBtn), for: .touchUpInside)
    return button
}()

@objc private func loginSignupBtn() {
    let vc = self.storyboard!.instantiateViewController(withIdentifier: "Login") as! Login
    vc.loadViewIfNeeded()
    self.navigationController?.pushViewController(vc, animated: true)
    self.navigationController?.isNavigationBarHidden = false
    let backItem = UIBarButtonItem(title: "X ", style: UIBarButtonItem.Style.done, target: nil, action: nil)
    let font = UIFont.boldSystemFont(ofSize: 26)
    backItem.setTitleTextAttributes([NSAttributedString.Key.font:font] ,for: .normal)
    backItem.tintColor = UIColor.green
    vc.navigationItem.leftBarButtonItem = backItem
}
override func viewDidLoad() {
    super.viewDidLoad()
    setupLayout()
}
override func viewWillAppear(_ animated: Bool) {

}
private func setupLayout() {
    let topImageContainerView = UIView()
    //topImageContainerView.backgroundColor = .yellow
    view.addSubview(topImageContainerView)
    //enable auto layout
    topImageContainerView.translatesAutoresizingMaskIntoConstraints = false
    topImageContainerView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    topImageContainerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    topImageContainerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    topImageContainerView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5).isActive = true
    view.addSubview(loginSignup)
    loginSignup.translatesAutoresizingMaskIntoConstraints = false
    loginSignup.topAnchor.constraint(equalTo: view.topAnchor,constant:hgt/2).isActive = true
    loginSignup.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    loginSignup.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    loginSignup.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5).isActive = true

}

}

enter image description here

【问题讨论】:

    标签: swift navigation


    【解决方案1】:

    这里你需要为点击 x 按钮添加目标和选择器

    let backItem = UIBarButtonItem(title: "X ", 
      style: UIBarButtonItem.Style.done,
       target: self, action:#selector(goBack))
    

    @objc func goBack(_ bar:UIBarButtonItem) {
       self.navigationController?.popToRootViewController(animated:true)
    }
    

    【讨论】:

    • 好的,但我现在有一个问题。当它返回时,它还会创建一个左后栏项目吗?我怎样才能让它消失?
    • firstPage 中设置这个self.navigationController?.isNavigationBarHidden = trueviewWillAppear
    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 2015-08-06
    • 1970-01-01
    • 2017-06-20
    • 2014-07-07
    • 2023-03-31
    • 2020-09-20
    • 1970-01-01
    相关资源
    最近更新 更多