在Swift中将值从一个视图控制器传递给另一个视图控制器

我在Swift上工作,我在tableview的didSelectRowAtIndexPath方法中有一个错误。 我想传递一个值到另一个视图控制器,即“secondViewController”。 这里EmployeesId是一个数组。 相关代码如下:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { var view: Dashboard = self.storyboard?.instantiateViewControllerWithIdentifier("Dashboard") as Dashboard self.navigationController?.pushViewController(view, animated: true) secondViewController.UserId = employeesId[indexPath.item] //getting an error here. } 

但是我得到这个错误:致命错误:意外地发现零,而解包一个可选的值。

任何帮助将不胜感激。

这是一个有两个假设的通用解决scheme。 首先,UserId不是UILabel。 其次,你打算使用在第二行实例化的view ,而不是使用secondViewController

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { var view: Dashboard = self.storyboard?.instantiateViewControllerWithIdentifier("Dashboard") as Dashboard self.navigationController?.pushViewController(view, animated: true) view.UserId = employeesId[indexPath.row] } 

以下是Dashboard的样子:

 class Dashboard: UIViewController { var UserId: String! @IBOutlet var userIDLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. userIDLabel.text = UserId } ... } 

在secondViewController中是UserId(strong, nonatomic) nonatomic)?

如果它软弱,它就发送垃圾。 你必须使它变得强大。

我们可以在swift中使用“struct”来传递值

  1. 在你的项目中创build一个swift文件
  2. 在像下面这样创build的swift文件中创build一个类

      class StructOperation { struct glovalVariable { static var userName = String(); } } 
  3. 从“First View Controller”的“StructOperation”类的“struct glovalVariable”的“static var userName”variables赋值

      @IBAction func btnSend(_ sender: Any) { StructOperation.glovalVariable.userName = "Enamul Haque"; //Code Move to Sencon View Controller } 
  4. 在目标视图控制器中获取像下面的值

      var username = StructOperation.glovalVariable.userName;