【问题标题】:Trouble passing int data from one view controller to another (segue) [duplicate]将 int 数据从一个视图控制器传递到另一个视图控制器时遇到问题(segue)[重复]
【发布时间】:2019-10-13 04:23:45
【问题描述】:

我想将一个 int 数据从一个视图控制器传递到另一个视图控制器。

问题是第二个视图控制器接收到的 int 数据与第一个视图控制器的 int 数据不匹配。

查看控制器 1:

import UIKit
class levelsSelector: UIViewController {
    var levelSelected: Int = 0
    var gameWanted: Int = 0

    @IBAction func level1Tapped(_ sender: Any) {
        gameWanted = 1
        performSegue(withIdentifier: "gameOn", sender: self)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "gameOne" {
            let levelsSelector = segue.destination as! game
            levelsSelector.finalGame = levelSelected
            let levelsSelector2 = segue.destination as! game
            levelsSelector2.finalLevel = gameWanted
        }
    }
}

查看控制器 2:

import UIKit
class game: UIViewController {
    var finalLevel: Int = 0
    var finalGame: Int = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        print(finalLevel)
        print(finalGame)
    }
}

【问题讨论】:

  • 错字:"gameOn" != "gameOne"。并且只检索一次destination

标签: ios swift xcode int segue


【解决方案1】:

你的 segue 名称打错了

performSegue(withIdentifier: "gameOn", sender: self)

...

if segue.identifier == "gameOne" {

这两个标识符需要匹配

【讨论】:

    【解决方案2】:
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destination = segue.destination as? game {
            destination.finalGame = levelSelected 
            destination.finalLevel = gameWanted
        }
    

    另外,请检查:情节提要上的 seque identifier 应该与 perform segue 方法中的字符串匹配

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多