2010-07-15 6 views
-1

pickedItem을 내 RootViewController.h에 내 DetailViewController.m 파일에 선언 할 수 없습니다.하나의 ViewController에서 다른 정수를 참조하십시오

이 변수를 전역 변수로 선언해야할지 모르겠으나 실패했습니다.

나는 이것이 간단해야한다고 생각하지만, 다른 제안 (다른 게시 된 답변에서)을 얻지 못했습니다.

미리 감사드립니다.

+0

몇 가지 코드를 알려주시겠습니까? –

답변

2

이 호출을 통해

[[UIApplication sharedApplication] delegate]
을 통해 앱 대리인에 액세스 할 수 있습니다. 그런 다음 루트보기 컨트롤러의 속성에 액세스 할 수 있습니다 (appDelagate의 rootViewController 객체에 액세스 할 수 있다고 가정).
@property(nonatomic, assign) NSInteger myInt

어디서나 코드

 
UIApplicationDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
delegate.viewController.myInt = 31; 

추신에서에서 RootViewController.h

에서

방금 코드를 입력하고 컴파일하지 않았습니다. 그래서 오타가있을 수 있습니다.

+0

+1 :이 작업을 수행하거나 싱글 톤을 설정할 수 있습니다. 많은 사람들이 응용 프로그램 처리와 관련된 응용 위임에 코드를 넣는 것만을 주장하지만 모든 사람들은 자신의 방식대로 작업을 수행합니다. – iwasrobbed

+0

이 동의했습니다. 앱 대리인과 루트보기 컨트롤러는 항상 메모리에 존재하며 앱을 응시하는 데 영향을 미치기 때문에 가벼운 가중치를 지정해야합니다. 싱글 톤은 좋지만 적절한 싱글 톤을 디자인하는 것은 쉽지 않습니다. 나는 메모리에 불필요한 물체를 생각해 낼지 모른다. – taskinoor

0

이렇게 코딩하면 안됩니다. NSNotificationCenter를 살펴 보거나 페이지 변경의 DetailViewController와 통신하기 위해 직접 대리자 클래스를 만드는 것이 좋습니다. 네가 가지고있는 것처럼 루트에서 세부 사항에 의존하지 않아야한다.

위의 코드를 기반으로 detailViewController에서 rootViewController를 어디에 설정했는지는 알 수 없습니까? 그것? 나는 rootViewController가 nil 인 경우에 충돌을 일으키지 만 가치가 있는지 확인하기 위해 rootViewController.pickedItem을 참조한다고 생각합니다.

또한 pickedItem이 적절하게 설정되어 있습니까? 즉, 세부 코드가 호출되기 전에 설정됩니까?

관련 문제