【问题标题】:Attribute a different value to a variable depending on the class from which you are coming (Swift)根据您来自的类(Swift)为变量赋予不同的值
【发布时间】:2017-11-18 12:41:39
【问题描述】:

在我的HomeClass 中有一个static var globalLimit: Int = 0,我必须在其他类中传递他的值,这是我的准备函数

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {



           if let vc = segue.destination as? SelectClass {
                  vc.limit = Int(steppeR.value)
                  HomeClass.globalLimit = Int(steppeR.value)
                  HomeClass.globalRadiusLimit = Int(stepperRadius.value) 
        }
           else if let np = segue.destination as? CourseClass2 {
            np.categories = filteredList
            np.numberPlaces = filteredList.count
            np.radius = Int(stepperRadius.value)
        }

    }

现在的问题是,在我什至可以从SelectClass 到达的CourseClass2 课程中,我有var numberPlaces = 0,他的价值是

override func viewDidLoad() {
        super.viewDidLoad()

        numberPlaces = HomeClass.globalLimit

    }

但是就像你在我的准备函数中看到的那样,当我直接从 HomeClass 进入 CourseClass2 时,我想要 numberPlaces = filteredList.count 的值,但它当然不起作用,因为它与 numberPlaces = HomeClass.globalLimitCourseClass2 的 viewDidload,那么我该如何解决这个问题呢?

【问题讨论】:

  • 只需将 var numberPlaces = HomeClass.globalLimit 声明为存储属性并从 viewDidLoad 中删除其初始化
  • 我该怎么做?
  • 您在 CourseClass2 中声明 numberPlaces 的位置,只需为其赋值即可。这将是它的默认值,稍后可以更改,这就是您将在 HomeClass 中执行的操作
  • 我试过了,但是不行
  • 不要将numberOfPlaces 设置为您的viewDidLoad。使该值的设置成为调用 viewController 的责任。

标签: ios swift swift3


【解决方案1】:

这样试试:

将您的 numberPlaces 变量设置为可选:

var numberPlaces: Int?

然后检查是否加载了视图,如果它为 nil:

override func viewDidLoad() {
    super.viewDidLoad()

    if numberPlaces == nil {
        numberPlaces = HomeClass.globalLimit
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多