gpt4 book ai didi

ios - 在 ViewController 类上设置值

转载 作者:行者123 更新时间:2023-11-29 02:21:08 24 4
gpt4 key购买 nike

我是 iOS 开发的新手,但我正在尝试修改 example app由 Estimote 提供(我正在使用他们的室内定位 SDK)。在示例中,有一个名为 MenuViewController 的 ViewController 类,其中包含一个名为 -loadLocationFromJSON() 的函数。现在,在这个函数中,他们创建了一个名为 locationViewController 的 ViewController 的新实例,它被推送到 navigationController。到目前为止,一切正常,位置文件正确构建并显示在屏幕上。

现在我想做的是创建一个位于 MenuViewController 类中的开关,它可以切换 LocationViewController 上的属性。 locationViewController 有一个名为 rotateOnPositionUpdate 的 indoorLocationView 属性,您可以将其设置为 true 或 false。在我按下 locationViewController 之前,我想根据我的 MenuViewController 类中的开关设置该属性。这是我到目前为止所拥有的:

@IBAction func loadLocationFromJSON() {
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("location", ofType: "json")
let content = NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: nil) as String
let location = ESTLocationBuilder.parseFromJSON(content)
var locationViewController:LocationViewController = LocationViewController(nibName: "LocationViewController", bundle: nil)
locationViewController.location = location
// the following line is where the code fails
locationViewController.indoorLocationView.rotateOnPositionUpdate = false

self.navigationController?.pushViewController(locationViewController, animated: true)
}

您肯定已经注意到,现在我只是试图将属性设置为 false(甚至不担心开关的状态)...但是当我尝试构建它时失败了。调试器返回一个错误,指出“ fatal error :在展开可选值时意外发现 nil”。我不完全知道这意味着什么,我也不知道为什么我不能设置那个 locationViewController 类的属性。有人可以提供一些帮助吗?

最佳答案

ViewController 在第一次被请求之前不会构建它们的 View 。通常,这是在 pushViewController 步骤中进行的,但并非必须如此。

此外,他们可能已将 indoorLocationView 声明为可选,因为它是一个 View ,并且他们在加载 View 的其余部分时构建它。您需要显式检查 nil 或使用 ? 运算符来避免在访问可能为 nil 的属性时发生崩溃。

locationViewController.indoorLocationView?.rotateOnPositionUpdate = false

indoorLocationViewnil时,这行不会crash,但也没有效果。您应该更改 LocationViewController 的实现以直接接受此参数,然后将其传递给它的 indoorLocationView 或在调用 pushViewController 后设置它>.

关于ios - 在 ViewController 类上设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28116739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com