2016-08-19 1 views
2

DetailViewController의 Core Data 객체를 다른 View Controller로 전달하여 편집 할 수 있습니까?DetailViewController에서 다른 View Controller로 Core Data 객체 전달

다음
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "showDetail" { 
      if let indexPath = self.tableView.indexPathForSelectedRow { 
       let myValue = myValues[indexPath.row] 
       let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController 
       controller.detailItem = myValue 
       controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem() 
       controller.navigationItem.leftItemsSupplementBackButton = true 
      } 
     } 
    } 

DetailViewController에서 EditViewController에 :

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "showEdit" { 

      let controller = editViewController 
      controller.editItem = detailItem 
      controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem() 
      controller.navigationItem.leftItemsSupplementBackButton = true 


     } 

    } 

을하지만 난 내 개체

편집

EDI에 전무를 얻을 수 MasterViewController DetailViewController로 이동에서

var editItem: MyValues? { 
     didSet { 
      // Update the view. 

      self.configureView() 
     } 
    } 

과 detailItem은 DetailViewController에서 다음과 같이 설정됩니다 : t 항목은 EditViewController에 다음과 같이 설정되어

var detailItem: MyValues? { 
     didSet { 
      // Update the view. 
      self.configureView() 
     } 
    } 

답변

2

가 대신 편집 컨트롤러에 대한 속성을 사용하여, 당신은 SEGUE에서 무엇을 얻을 사용 .

e.e. (당신이 당신의 EditViewController로 직접 이동하고 가정) : 교체 ...

let controller = editViewController 

... 뭔가 등으로 ...

let controller = segue.destinationViewController as! EditViewController 

을 ... 당신은 아마 테스트보다는한다 제외 as!을 사용하십시오.

===

이있게되었습니다 방법에 대한 내 생각으로 업데이트. (의견보기)

어떤 코드에서는 editViewController이 가리키는 것을 만들어야합니다. 즉, segue 메커니즘의 일부로 생성 된 동일한 인스턴스/개체가 아닙니다. 즉, 두 개의 다른 객체가 있고 화면에보기를 넣을 데이터에 데이터를 전달하지 않는 것입니다.

+0

감사합니다. 그 트릭을 할 것으로 보인다. 그러나 왜 내 코드가 작동하지 않았습니까? –

+0

'editViewController'가 가리키는 부분을 생성 했어야합니다. 즉, segue 메커니즘의 일부로 생성 된 동일한 인스턴스/객체가 아닙니다. 즉, 두 개의 서로 다른 'EditViewController' 객체가 있었고 화면에보기를 넣을 데이터에 데이터를 전달하지 않았습니다. –

+0

답장을 보내 주셔서 감사합니다. 다른 사람들이상의 할 수 있도록 귀하의 답변에이를 추가하도록 요청할 수 있습니까? 또한 당신은 내 클래스 안에 var로 만든 (editViewController) 그것을 가지고있다 ... –

관련 문제