나는 스위프트를 배우려고 노력 중이며 유명한 노트 응용 프로그램을 개발하려고합니다.prepareForSegue는 뷰 컨트롤러간에 값을 전달하는 올바른 방법입니다.
테이블 뷰에 바인딩 된 배열과 메모를 추가하는 뷰가 있습니다. 두 번째보기에서 textfieldshouldreturn 이벤트가 segue를 트리거하고 tableview로 돌아갑니다.
나는 이것이 올바른지 배우고 싶다. 이 방법으로 다른 뷰 컨트롤러에서 변수를 조작하고 있기 때문입니다. 나는 MVC 마스터가 아니지만 잘못된 것처럼 느꼈다. 내 코드 스 니펫은 다음과 같습니다.
func textFieldShouldReturn(textField: UITextField) -> Bool {
self.performSegueWithIdentifier("backSegue", sender: self)
return true
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "backSegue"){
let navController = segue.destinationViewController as UINavigationController;
let myController = navController.topViewController as NotesTableViewController;
if(self.ourTextField?.text != nil || self.ourTextField?.text != ""){
myController.notes.append(self.ourTextField?.text ?? "");
}
}
}
고맙습니다.
* 왜 잘못 생각합니까? 그것은 올바른 방법입니다. 컨트롤러는 데이터와 이러한 데이터의 뷰를 관리하는 데 사용되므로 다른 뷰 컨트롤러를 밀어 넣으면 소스와 대상 사이에 일부 데이터를 전달하는 것이 합리적입니다. –
이것은 뷰 컨트롤러간에 데이터를 전달하는 매우 일반적인 방법이므로 사용하는 것에 대해 걱정할 필요가 없습니다. 많은 [존경받는 개발자] (http://oleb.net/blog/2012/02/passing-data-between-view-controllers/)가 그렇게합니다. 다른 하나의 옵션이 있습니다. 내가 아는 한, Swift는이 점에서 테이블에 특별한 것을 가져 오지 않으므로 [기존 Objective C 질문] (http://stackoverflow.com/questions/5210535/passing-data-between)을 확인해야합니다. -view-controllers)도 있습니다. –