Swift 通过按下 "Back"按钮将数据传输到第一个 View

标签 swift uinavigationcontroller

Hello friends . Navigation control to the second screen. I need to go to the one screen with the button(Sonucları Listele) on the second screen and I have to make the number on the first screen to "2"

image 1 image 2

第一眼

class KonularViewController: UIViewController {

    var number : Int?

    @IBAction func barButtonKonuEkle(_ sender: Any) {
        let childViewController = storyboard?.instantiateViewController(withIdentifier: "KonuEkleViewController") as! KonuEkleViewController
        navigationController?.pushViewController(childViewController, animated: true)
    }
}

第二个 View

class AramaViewController: UIViewController {
    @IBOutlet weak var btn1: UIButton!
    @IBOutlet weak var btn2: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        btn1.isSelected = true
    }

    @IBAction func btnListele(_ sender: Any) {
      //First View "Number" variable on the first screen will be 2
    }

    @IBAction func btn_box(sender: UIButton) {

        if sender.titleLabel?.text == "En Yeniler"
        {
        btn1.isSelected = true
        btn2.isSelected = false
        }
        else
        {
        btn2.isSelected = true
        btn1.isSelected = false
        }
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

最佳答案

一种策略是拥有一个第三类,即您的模型,它可以保存状态。

class Model {
   static let shared = Model()
   var count: Int = 1
}

class AramaViewController: UIViewController {
    @IBAction fund btnListele(_ sender: Any) {
      Model.shared.count += 1
      //First View "Number" variable on the first screen will be 2
}

class KonularViewController: UIViewController {
    override func viewWillAppear(animated:Bool) {
        super.viewWillAppear(animated: animated)
        numberView.text = "\(Model.shared.count)"  //display your number here
    }
}

另一种选择

返回 Navigation Controller View Controllers 数组中的前一个 View 并设置一个属性。这有点脆弱。

class KonularViewController: UIViewController {
    var count: Int = 1
    override func viewWillAppear(animated:Bool) {
        super.viewWillAppear(animated: animated)
        numberView.text = "\(count)"  //display your number here
    }
}

class AramaViewController: UIViewController {
    @IBAction fund btnListele(_ sender: Any) {
      let numberOfViews = navigationController.viewControllers.count
      if count > 1, let previousViewController = self.navigationController.viewControllers[numberOfViews-2] as? KonularViewController 
      previousViewController.count += 1
      //First View "Number" variable on the first screen will be 2
}

关于Swift 通过按下 "Back"按钮将数据传输到第一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937108/

相关文章:

objective-c - Swift 相当于惰性 Property getter

swift - 如何更新列表中的一对多内容?

ios - 如何检查 indexPath 是否有效,从而避免 "attempt to scroll to invalid index path"错误?

ios - 如何在 ios 中的 nib 文件中添加幻灯片导航

ipad - 带有自定义垂直按钮栏的 UINavigationController

ios - ViewController 嵌入为 UITabBarController 时如何向导航栏添加按钮

ios - 通过 CocoaPods 使用 Google Analytics 时,“链接器命令失败,退出代码为 1”

ios - 从声明的变量引用核心数据属性

ios - 如何禁用 UINavigationBar 上的向右滑动手势?

ios - 使用 UIPageViewController 向左滑动返回第一页