2012-07-13 6 views
0

두 개의보기 컨트롤러와 펜촉이 있습니다. I는 토글 스위치를 하나의 뷰 컨트롤러 채워 헤더 파일이 선언스위치 사용 중 문제가 발생했습니다.

@public UISwitch *toggleSwitch; 

및 이와 같은 특성으로 노출 : 또한 toggleSwitch 출구와 상기 스위치에 연결

@property (nonatomic,retain) IBOutlet UISwitch *toggleSwitch; 

. 그리고이 같은 내 다른 뷰 컨트롤러에서이 스위치를 사용 : "스레드 1 : 신호 SIGABRT"모든 스위치는 기본적으로 ON되고 있지만 스위치를 끌 때 예외가 발생했습니다와 함께 잘 작동하지만

theViewControllerWhereIDeclaredTheSwitch.toggleSwitch.on = YES; 

main.m 파일에 있습니다. Xcode로 작업하는 동안이 오류가 자주 발생합니다.이 오류는 내 엉덩이에 큰 고통입니다. 도와주세요.

+0

당신은 아마 몇 가지 문제가있다. 또한 viewcontroller-2가 viewcontroller-1에 속한 뷰의 상태를 변경하게하는 것이별로 의미가 없으므로 별도의 뷰 컨트롤러를 갖는 목적을 상실합니다. viewcontroller-1에게 (어떤 종류의 모델을 사용하는) 논리적 프로그램 상태에 대해서만 말하고 viewcontroller-1이 뷰가 다시로드 될 때 스위치를 토글해야하는지 알아 내고 싶을 것입니다. – Frank

답변

5

UIViewControllers 이상의 UI 요소를 공유하면 안됩니다.

보다 나은 방법은 BOOL을 공유하거나 NSObject에서 상속받은 자신의 개체를 캡슐화하고 2 UIViewControllers 사이에 전달하는 것입니다.

1

@werner가 맞습니다.

컨트롤러와 뷰를 프로그래밍 할 때 NVC 패턴을 구현합니다. 아이디어는 데이터를 보유하고있는 View와 Model 사이의 두뇌 인이 Controller 객체를 가졌다는 것입니다. 따라서 애플리케이션에서 수행해야하는 작업은 스위치 상태를 공유하는 것이 아니라 스위치를 트리거 할 때 모델의 BOOL 값을 업데이트하고 두 컨트롤러에서 모델을 공유하여 두 컨트롤러의 값을 파악하는 것입니다.

(CF : wikipedia) 객체가 이미 출시 되었기 때문에

관련 문제