저는 iOS 개발을 처음 사용했지만 Estimote에서 제공 한 example app을 수정하려고합니다 (실내 위치 지정 SDK를 사용하고 있습니다). 이 예제에서는 MenuViewController라는 ViewController 클래스에 -loadLocationFromJSON()이라는 함수가 있습니다. 이제이 함수 내부에서 navigationController에 푸시 된 locationViewController라는 ViewController의 새 인스턴스를 만듭니다. 지금까지는 모든 것이 잘 작동하고 위치 파일이 올바르게 빌드되어 화면에 표시됩니다.ViewController 클래스의 값 설정
이제 내가하고 싶은 것은 LocationViewController의 속성을 토글 할 수있는 MenuViewController 클래스에있는 스위치를 만드는 것입니다. locationViewController는 true 또는 false로 설정할 수있는 rotateOnPositionUpdate라는 indoorLocationView 속성을 가지고 있습니다. 바로 전에 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)
}
는, 지금 난 그냥 거짓 (그리고 심지어 스위치의 상태에 대해 걱정)에 속성을 설정하려고 해요 ...하지만이 : 여기에 지금까지 가지고 무엇을 내가 그것을 만들려고 할 때 실패합니다. 디버거에서 "치명적인 오류 : 예기치 않게 옵션 값을 래핑하지 않는 동안 nil이 발견되었습니다"라는 오류를 반환합니다. 이것이 무엇을 의미하는지 완전히 알지 못하고 왜 locationViewController 클래스의 속성을 설정할 수 없는지 알지 못합니다. 누군가 도움을 줄 수 있습니까?
도움을 주셔서 감사합니다. "?" 연산자는 충돌로부터 그것을 지켰습니다 ...하지만 당신이 말했듯이 ... 코드 라인은 실제로 아무런 효과가 없습니다. 그것은 LocationViewController가 MenuViewController에서이 값을 받아들이는 것처럼 보이지만 이동하는 방법이 될 것입니다 ...하지만 어떻게 해야할지 잘 모르겠습니다. 어떤 아이디어? – andyopayne
'LocationViewController' 클래스에 속성을 추가 한 다음'indoorLocationView'의 속성을'viewDidLoad' 내부의 해당 값으로 설정하십시오. –
오른쪽 ... 나는 그것을 이해할 수있다. 하지만, 내가 원하는 것은 LocationViewController 외부에서 값을 갖는 것입니다. 따라서, LocationViewController 내에서 indoorLocationView의 속성을 어떻게 든 설정하는 MenuViewController의 저장된 부울 값 (이상적으로 스위치에서 오는 값)이있을 것입니다. 말이 돼? 그래서 MenuViewController는 푸시 될 때 LocationViewController에 값을 전달해야합니다 ... 또는 LocationViewController는로드 된 후 MenuViewController에서 값을 가져와야합니다. 어느 쪽을하는지 잘 모르겠습니다. – andyopayne