다음과 같은 디자인의 응용 프로그램이 있습니다. 문서를 나열하는 표보기. 그리고 문서를 편집하는 ViewController.개체의 복사본을 원래 참조로 다시 할당하는 방법은 무엇입니까?
문서를 편집 할 때 객체 사본을 사용하려는 경우 사용자가 취소를 누르면 사본을 버립니다. 사용자가 저장을 선택하면 수정 된 문서를 원본으로 복사합니다. (너무 많기 때문에 모든 문서의 필드를 viewController의 속성으로 가질 수는 없습니다.)
테이블 뷰 컨트롤러 :
@interface
@property (nonatomic,retain) Document *asignedDocument;
@property (nonatomic,retain) Document *editedDocument;
viewDidLoad{
editedDocument= [assignedDocuemnt copy];
}
IBAction save {
assignedDocument=editedDocument;
}
내 문제가 documentsArray에서 원본 문서 편집 된 버전으로 업데이트되지 않는 것입니다 :
SelectedRowAtIndex {
document= [documentsArray objectAtIndex:indexPath.row];
viewController.assignedDocuemnt= document;
}
은 그 때 나는 항목이 수정보기 컨트롤러 클래스가 있습니다. 내가 무엇을 놓쳤는가?
답변 해 주셔서 감사합니다. 마지막 부분 인 "더 나은 방법"에 대해 자세히 설명해 주시겠습니까? 나는 문서 배열을 별도의 Data 클래스에 singleton으로 잡고있다. – Rod
난 그냥 테이블보기 컨트롤러에 보낼 메시지를 하드 코딩 비해 더 의미. 'replaceSelectedDocument'를 보내면, 그 객체들을 영원히 결합 할 수 있습니다. 대신에'target : self action : @selector (replaceSelectedDocument :)'를 넘기면 융통성을 잃지 않게됩니다 : 에디터는 테이블 뷰 컨트롤러에 의해 실제로 호출 된 것을 신경 쓰지 않고 단지 보내야한다는 것을 알고 있습니다 완료 될 때 지정된 대상에 지정된 메시지. –