2011-10-31 6 views
1

두 개의보기 (ViewControllerOne 및 ViewControllerTwo)를 설정했습니다.
내 ViewController2, 나는 나중에 계산에서 float 값으로 사용하는 텍스트 필드에 입력 한 숫자 변수 (dataValue)가 있습니다.보기간에 앞뒤로 전환 할 때 값 유지

사용자가 다른 클래스보기 (ViewControllerOne)로 이동할 수 있지만 ViewControllerTwo로 돌아 가면 텍스트 필드에 입력 한 변수가 유지되지 않고 내 ViewControllerTwo.m 파일에 정의 된 기본값으로 돌아갑니다.

내 ViewControllerTwo에 내 dataValue를 기억 시키려면 어떻게해야합니까?

내 dataValueTextField을 @synthesized 및 ViewControllerTwo.m에서 내 기본 dataValue 정의했습니다 :

float textFieldData = [dataValueTextField.text floatValue]; 
dataValue = textFieldData; 

: 나중에, 내가 float 값으로 내 dataValueTextField를 변환 한 다음

@synthesize dataValueTextField; 
float dataValue = 1.00; 

을 그러나 뷰를 앞뒤로 전환 할 때 dataValue를 기억하지 않습니다. 내 viewWillDisappear에 무언가를 추가해야합니까, 아니면 viewWillDisappear 또는 ViewWillAppear 메서드에 무언가를 추가해야합니까?
도움이 될 것입니다. 나는 쓸데없는 다른 것을 시도하는 빨대를 쥐고 ​​있었다. 감사합니다. .

답변

0

뷰를 전환 할 때 실제로 뷰 컨트롤러의 새 인스턴스를 실제로 만들 수 있습니까? 그러면 기본값으로 다시 설정되는 값을 설명 할 수 있습니다. 또 다른 가능성은 뷰가 나타날 때마다 트리거되는 이벤트 콜백에서 호출되는 기본값으로 코드를 설정하는 것입니다. 모든 이벤트 핸들러를 로그 아웃하고 뷰를 전환 할 때 호출되는 것을 볼 수 있습니다.

+0

제안 해 주셔서 감사합니다. 그럴 것 같지 않습니다 (보기 컨트롤러의 새 인스턴스를 만드는 방법을 알지 못합니다). 그러나 코드를 다시 검사합니다. 귀하의 답변에 매우 감사드립니다! – Jupiter869

0

메모리 경고가 표시되면보기가 언로드 된 다음 다시 돌아와서 viewDidLoad가 다시 호출되도록 다시로드 될 수 있습니다. 이렇게하면 UITextField의 값이 재설정됩니다.

0

dataValue는 프리미티브임을 나타내는 float입니다. 프리미티브는 유지되지 않고 각 메소드의 끝에서 손실됩니다. 그것은 당신이 dataValue를 선언하는 방법에 의해 보입니다, 그것은 싱글 톤입니까? 당신이보기를 전환 할 때 싱글 톤이 어떻게 처리되는지에 대한 100 % 아니며, 릴리스되거나 유지되는 경우입니다.

아마 dataValue를 인스턴스 변수로 만드는 것이 가장 좋을까요? dataValueTextField를 사용했을 때와 마찬가지입니다.

+0

나는 이것을 시도 할 것이다. 그것이 작동하기를 바란다, 나는 지혜 끝에있다. 감사 – Jupiter869

관련 문제