【问题标题】:Swift Passing variable to Second View Controller With InheritanceSwift将变量传递给具有继承的第二个视图控制器
【发布时间】:2017-11-28 15:50:06
【问题描述】:

我有两个视图视图控制器;一个继承另一个。 VC1 有变量,可以说我在该视图控制器中发生了变异的学生。 VC2 继承 VC1。我在 VC2 中有另一个变量,我想将其设置为与 VC1 中的变量相同。我已经尝试了下面的选项,但它总是在展开可选值错误时返回意外发现的 nil。我知道该变量不为空,因为我可以在 VC1 中打印出它的值就好了。那么我需要在我的代码中进行哪些调整才能正确地将变量从 VC1 发送到 VC2?

在 VC1 中:

    var students: [Student]!
func setmystud(changeme: [Student]) -> Void {
        var mechangeme = changeme
        mechangeme = students
    }

在 VC2 中:

    var mystudents: [Student]!
override func viewDidLoad() {

       super.setmystud(changeme: mystudents)
        print(mystudents.count) //returns the error
    //OTHER TRY//  mystudents = super.students
    }

【问题讨论】:

    标签: xcode inheritance swift3 uiviewcontroller


    【解决方案1】:

    这是对继承的误解。 VC2 继承自 VC1 的事实意味着它具有相同的属性,但这并不意味着它对这些属性具有相同的值。如果您有两个 VC1 实例,它们也不会共享属性值。

    如果您想在VC2 的实例中设置值,您需要将这些值传递给VC2 的特定实例。

    类和实例之间的区别以及类继承的基础是面向对象编程(在任何语言中)的基本思想。如果您在这方面遇到问题,您应该暂停片刻,并确保您了解 OOP 的基础知识。几乎每篇文档都假设您已经具备该背景。不是明显的信息;只是假设你已经学会了。

    一个很好的介绍是App Development in Swift。第 12 课介绍了这些概念。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      相关资源
      最近更新 更多