当前位置: 首页 > 面试题库 >

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

姜鸿
2023-03-14
问题内容

我正在使用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.
}

但是我收到此错误:致命错误:展开一个Optional值时意外发现nil。

任何帮助将不胜感激。


问题答案:

这是一个有两个假设的一般解决方案。首先,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]
}

这是仪表板的外观:

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
    }

    ...
}


 类似资料:
  • 我是JavaFx新手,因此我找不到解决问题的方法 假设我有以下应用程序结构: 在SecondController中显示文本的最佳/最佳方式是什么,从FirstController传递文本。我的意思是,我在中输入一个文本,然后按下按钮,按下按钮后,我希望文本显示在使用另一个控制器的中。我已经阅读了很多关于和可以用来解决这个问题的知识,但不幸的是,我无法实现一个有效的解决方案。 如果你们专家能在这方面

  • 问题内容: 我有以下两个对等控制器。这些没有父项: 在控制器1中,我想更新由Controller2控制的HTML中的变量xxx的值。有办法吗? 问题答案: 绝对使用服务在控制器之间共享数据,这是一个有效的示例。$ broadcast不是要走的路,您应该避免在有更合适的方式时使用事件系统。使用“服务”,“值”或“常量”(用于全局常量)。 http://plnkr.co/edit/ETWU7d0O8K

  • 问题内容: 我不确定是否遇到“最佳实践”问题,试图以一种怪异而奇妙的方式解决该挑战,或者我是否还没有掌握AngularJS。 场景 :因此,我一直在尝试一种方法,使页面上多次输出“ originCity.cityName”,所有这些都引用同一工厂内的同一对象,希望将其设置为其他值(例如“测试字符串”),那么它将追溯替换我在页面周围拥有的所有内容。 在两个单独的控制器中,我对工厂进行了以下致电: 并

  • 问题内容: 我没有找到有关此问题的文章,但没有一个解决我的问题。 就像我说的那样。 ViewControllerA ViewControllerB 我试图将添加为的子视图,但是它 抛出类似“ ” 的错误。 下面是代码… ViewControllerA ViewControllerB只是一个带有标签的简单屏幕。 ViewControllerB EDIT 根据用户答案的​​建议解决方案,ViewCon

  • 我找到了一些关于这个问题的帖子,但是没有一个能解决我的问题。 说像我已经... ViewControlllerA ViewControlllerB 我试图将ViewControlllerB添加为ViewControlllerA中的子视图,但是,它抛出了一个错误,如""。 下面是代码。。。 视图控制器 ViewControllerB只是一个带有标签的简单屏幕。 视图控制器B 编辑