1

내보기 컨트롤러 중 하나에 여러 개의 UISwitches가 있으며 다른보기 컨트롤러에서 If/및 문에 대한 UISwitches 값에 액세스 할 수있게하려고합니다. Objective-c에서 어떻게합니까?보기 컨트롤러 간 통신

답변

1

이것은 뷰 컨트롤러 간의 불필요한 의존성을 작성하는 것처럼 나쁜 생각입니다.

그래도이 작업을 수행하려면 스위치가있는 첫 번째보기 컨트롤러의 참조를 두 번째보기 컨트롤러로 전달하십시오. 그런 다음 두 번째보기 컨트롤러에서 해당 UISwitch의 on 속성에 액세스하면됩니다.

그러나 그 경로로가는 대신 사용자 지정 클래스를 만들어 각 UISwitch의 부울 상태를 유지하는 것이 좋습니다. 이 클래스의 인스턴스는 싱글 톤이거나 응용 프로그램 대리자에 포함될 수 있습니다. 두 접근법을 사용하는 방법은 answer을 참조하십시오.

UISwitch가 데이터 모델의 일부 속성을 나타내는 방법 일뿐만 아니라 사용자 지정 클래스가 더 좋습니다. 그리고 내일 UISwitch를 다른 컨트롤로 대체하면 두 번째보기 컨트롤러가 계속 작동해야합니다. 두보기 컨트롤러에는이 사용자 지정 클래스의 개체에 대한 참조가 있습니다. 변경이있을 때마다 첫 번째 컨트롤러가이 개체를 업데이트합니다.

나는 마침내 cdespinosa의 제안을 사용하지만
@interface DataValues : NSObject { 
    BOOL first; 
    BOOL second; 
    BOOL third; 
} 

@property BOOL first; 
@property BOOL second; 
@property BOOL third; 
+0

가, 그것은 주목해야합니다 솔루션뿐만 아니라 잘 일한 :

클래스 인터페이스는 다음과 같이 될 수 있습니다. –