2012-04-13 3 views
0

기본 모달 뷰 시스템이 있습니다.보기를 닫으면 모든 값을 잃게됩니다 ... 치료법으로 viewWillAppear?

내 앱은 2 개의 다른보기를 표시하는 2 개의 버튼이있는 UI 기본을로드합니다. 해당보기에서 닫기 단추.

모두 정상적으로 작동합니다.

그러나 두 개의 모달보기 중 하나에서 UISlider UHlider & UISwitch가 있습니다. 나는 값을 유지하길 원하지만 해제하면 잃어 버리게된다. UI 요소가 포함 된보기를 표시하기 위해 버튼을 트리거하자마자 처음에는 xib에 넣었을 때 모든 요소에 대한 모든 값이 표시된다.

변수에 모든 값을 저장해야합니까? 그렇다면 viewWillAppear에서 해당 값을 "회수"할 수 있습니까?

나에게 또 다른 전략을 알려주시겠습니까?

+0

보기가 할당 해제되면 어떻게 값을 유지하려고합니까? – CodaFi

+0

특히, 나는 기대하지 않으며 당신도 대답하지 않습니다. – gluon

답변

2

예, 제안 된 접근 방식은 정확하게 올바른 종류입니다. 그러나 조심하십시오. viewWillAppear은 여러 가지 이유로 호출 될 수 있습니다. 보기 컨트롤러가 존재하고 처음으로보기를 표시 할 때만이 작업을 수행하는지 확인하십시오.

NSUserDefaults는 이와 같이 세계적으로 필요한 정보를 저장할 수있는 훌륭한 장소입니다. viewWillDisappear에서 원하는 상태 정보 (슬라이더와 스위치의 값)를 기본값으로 저장하십시오. 그런 다음보기가 표시 될 때 검색하십시오.

+0

NSUserDefaults에 대해 알게되었습니다. OpenFrameworks를 사용하여 OF 측에 물건을 저장할 수도 있다는 것을 알았습니다. 그것은 내 경우에 좋은 & 쉬운 디자인 패턴 수 있습니다. 귀하의 답변에 많은 감사드립니다! – gluon

2

모달 뷰를 만들면 modalView의 새 인스턴스 인 modalView가 생성됩니다. 이 새 인스턴스는 다른 인스턴스에 대해 아무것도 모릅니다. 이러한 모달 뷰 컨트롤러의 이전 반복에서 정보를 유지할 수있는 몇 가지 방법이 있습니다.

어떻게해야합니까? 기본보기에서 장소 소유자를 설정하고 사용자가 선택한 값을 프로토콜 및 위임 설정을 통해 기본보기로 전달합니다. 그런 다음 모달 뷰를 선택하면 모달 뷰를 표시하기 전에 해당 변수를로드 할 수 있습니다.

예를 들어, 모든 값이 포함 된 사전이 있다고 가정 해 봅시다. {slider = YES, someValue = 10, ...} 주 뷰 컨트롤러에서 첫 번째로 만든 사전을 만들고 기본값을 배치하십시오 그 안에.

모달보기 컨트롤러에서 동일한 사전을 속성으로 만듭니다.

모달 뷰 컨트롤러의 대리인으로와 doneEditing의 구현에 첫 번째보기를 설정

- (void) doneEditing:(NSDictionary *)values

같은이 방법을 사용하여 모달 뷰 컨트롤러의 프로토콜을 만들기 값을 복사 모달 뷰를 팝핑하기 전에 첫 번째 뷰에있는 사전에 추가합니다.

첫 번째보기에서 모달보기를 다시 표시 할 준비가되면 모달보기의 사전 속성에 값을 복사 한 다음 프리젠 테이션을 표시합니다.

나는 이것이 올바른 방향으로 나아갈 수 있기를 바랍니다. 새로운 뷰를 생성 할 때마다 모달 뷰를 생성하거나 표시 할 때마다 이전 인스턴스에 대해 전혀 알지 못하는 경우 이전 인스턴스에 대해 전혀 알지 못한다는 점을 기억해야합니다.

+0

좋은 디자인. 내가 이해할 수 있다면, 나는 생각하지 않았다. 나는 다음 물건을 위해 그것을 파헤 치고 시험 할 것이다. [iPad 용 디지털 충돌] (http://itunes.apple.com/us/app/digital-collisions-hd/id511707721?mt=8)은 방금 업그레이드 한 관련 응용 프로그램입니다. – gluon

관련 문제