0

내 앱에서 내비게이션 컨트롤러를 사용하고 있습니다. 내 문제는 내가 이전보기로 이동 한 다음 현재보기로 돌아 가면이보기의 모든 TextField가 비어 있다는 것입니다.popViewControllerAnimated 후 UITextField 내용이 비어 있습니다.

내비게이션 컨트롤러에서 스택을 탐색 할 때이 값을 텍스트 필드에 저장하는 방법을 모르겠습니다. 당신이 밀거나보기 컨트롤러 팝업 때로드 또는 각각 메모리에서 언로드,

- (IBAction)swipeBack:(id)sender { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 
+0

보기 컨트롤러를 팝업 할 때 강력한 참조를 유지하지 않으면 컨트롤러가 효과적으로 할당 취소됩니다. – nhahtdh

+0

나는 어떻게 그것을 강력하게 참조 할 수 있습니까? – gpichler

답변

1

이전보기에서.합성, 재산 당신의 @implementation에서 다음

@property (noonatomic, retain) YOURVIEWCONTROLLER *secondVC; 

:이와 함께, 모달 뷰와 뷰 컨트롤러를 제시하고 어디

@synthesize secondVC; 

다음 코드를 교체를 시간의 파일 속성을 선언 :

if(!secondVC){ 
    YOURVIEWCONTROLLER *controller=[[YOURVIEWCONTROLLER alloc]init.......]; 
    [self setSecondVC:controller]; 
    [controller release];//if you ain't using arc else just set it to nil 
    controller=nil; 
} 
[self presentModalViewController:self.secondVC animated:YES]; 

'YOURVIEWCONTROLLER'는 텍스트 필드를 포함하는 두 번째 View 컨트롤러의 클래스 이름입니다. -dealloc에서 secondVC 속성을 해제하는 것을 잊지 마십시오. 희망이 도움이 될 것입니다.

1

:

이 내가 popViewControllerAnimated를 호출 내 방법입니다. 컨트롤러를 팝핑하기 전에 정보를 저장하고 새 정보를 할당 한 다음 스택에 밀어 넣기 전에 정보를로드해야합니다. NSUserDefaults 또는 기본 파일 I/O를 사용하여 정보를 저장하고 다시로드 할 수 있습니다.

저장 :

  • 저장 데이터를 상기 한 방법 중 하나를 사용.
  • 그런 다음보기 컨트롤러를 팝하십시오.

로드 :

  • 로드 데이터.
  • 보기 컨트롤러를 할당하십시오.
  • 데이터를보기 컨트롤러에 전달합니다 (속성, 싱글 톤 등 사용)
  • 보기 컨트롤러를 누릅니다.
+0

답변 해 주셔서 감사합니다. 다른 방법이 있습니까? 모든보기에서 많은 텍스트 필드가 있습니다.이 작업은 비용이 많이 듭니다. 이전 뷰를 탐색 할 가능성이 있기 때문에 스택에서 팝하지 않아도됩니다. – gpichler

+0

밀어 넣기와 뒤집기 (보기로 돌아 가기) 사이에 데이터를 저장해야합니다. 그렇지 않으면 데이터가 손실됩니다. –

0

여기서 다루어야 할 두 가지 사항이 있습니다 : 1. 텍스트 필드의 내용 저장. 2.보기 컨트롤러를 다시 누르면 텍스트 필드의 내용 복원.

첫 번째 문제는 AppDelegate 또는 다른 글로벌 싱글 톤과 같은 전역 개체에 텍스트 필드 값을 저장하여 해결할 수 있습니다.

2를 다루는 가장 좋은 방법은 텍스트 필드가있는보기 컨트롤러의 초기화 프로그램을 만드는 것입니다. 예를 들면 :

- (id)initWithOptions:(NSDictionary*)options; 

그런 다음 스택에 컨트롤러를 밀어해야 할 때, 당신은 1에서 글로벌 스토리지에서 이전에 저장된 값을 얻고, 옵션 사전에이를 전달합니다. 그런 다음 의 viewDidLoad에서 값을 필드에 할당합니다.

0

왜 그것을 저장하기위한 속성으로 설정하지 않습니까? 보여주기 위해 밀어 넣기를 원할 때, 널 (Null) 멤버 일 때만 할당 할 수 있습니다.

+0

코드 예를 들어 주시겠습니까? 속성을 관리하는 방법을 모르겠습니다. 감사합니다. – gpichler

+0

어떻게 데모를 줄 수 있습니까? 다음과 같이 : if (nil == self.customViewController) {CustomViewController * aCustom = [[CustomViewController alloc] init]; self.customViewController = aCustom; [aCustom release];} [self.navigationController pushViewController : self.customViewController animated : YES]; – Siam