2011-11-22 7 views
0

테스트를 위해 문자열 변수 (isLoggedIn)와 NSManagedObject (userObject)를 전달하고 있습니다. 그러나 VC를 닫고 루트로 되돌아 오면 loginViewController의 변수에 새 데이터가 설정되어 있지 않습니다.dismissModalViewController 뒤에 값이 전달되지 않습니다.

LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil]; 
loginVC.managedObjectContext = self.managedObjectContext; 
loginVC.userObject = self.userObject; 
loginVC.isLoggedIn = self.isLoggedIn; 

[self presentModalViewController:loginVC animated:YES]; 
[loginVC release]; 

나중에 함께보기를 기각 :

[self dismissModalViewControllerAnimated:YES]; 

업데이트 :

누군가가 제안 위임을 사용하여 종료. 나는 지침으로 다음과 같은 게시물을 사용 : 내가 제대로 따라하지 않을 수

UIViewController parentViewController access properties

+4

: 나는 지침으로 다음과 같은 게시물을 사용했다. – user523234

+0

무슨 데이터에 대해 더 설명 할 수 있습니까? 모달 방식으로보기 컨트롤러를 올바르게 표시하는 방법을 사용하고 있지만 LoginViewController 클래스에 대리자 필드를 추가하고 해당 클래스를 호출 클래스로 설정합니다. 또한 핵심 데이터를 변경하는 경우 컨텍스트 저장 호출을 사용하여 해당 데이터를 저장하는 것을 잊지 마십시오! – Warkst

답변

0

이 관련성이 될 수 있도록.

나는 당신이 의미 추측하고있다 :

  1. 당신은 당신은 그 변화가 self.userObject과의 self.isLoggedIn에 반영 될 것으로 예상 당신은 LoginViewController
  2. 내부에 일부 내용을 변경 alloc/init
  3. 후 인스턴스 변수를 설정 인스턴스화 된 클래스 LoginViewController

객체 자체를 조작하거나 포인터를 재 할당하면 발생합니다.

예 :

당신이 self.userObject.name = @"Test";LoginViewController 내부는 그 변화가 인스턴스 변수가 메모리에서 같은 객체를 가리키는 및 개체를 조작하기 때문에 LoginViewControllerLoginViewController을 인스턴스화하는 클래스에 반영됩니다 호출하는 경우

.

또는

당신이 self.userObject = theResultOfSomeNewFetch; 전화 당신이 지금 LoginViewController

라는 클래스의 포인터에 다른 userObject 가리키는 LoginViewController에 대한 포인터를 가지고 그 변화가 반영되지 않을 경우 바라건대 나는 음모를 완전히 잃어 버리지 않았으며 이것은 당신이 의미하는 바에서 어딘가에있다.

+0

그래, 내 생각이 맞아. stringA = stringB라고 말한 다음 stringB = @ "내 새 문자열"stringB에 새 포인터가 지정되면 stringA는 더 이상 stringB를 가리키지 않으므로 새 값이 반영되지 않습니다.예를 들어 변경 가능한 문자열을 사용한 경우 새 문자열을 할당하지 않고 stringB의 값을 변경하여 새 포인터를 할당 할 수 있습니다. – nebs

관련 문제