2010-04-11 2 views
1

어떻게 두 개의보기 (따라서 두 개의 클래스) 사이에 정보를 보냅니 까? 내 애플 리케이션 대리인을 찾고 있습니까? 더 좋은 방법이나 다른 방법이 있습니까?기본 개념 : 두보기 간 통신?

답변

0

나는 Application Delegate를 사용할 것입니다. 또는 하나의 뷰가 다른 뷰를 소유하고 있으면이를 함께 초기화하고 클래스의 기본 참조를 유지할 수 있습니다.

글로벌 컨텍스트 개체를 사용하여 뷰 사이에 전역 정보를 유지하는 것이 항상 유용하다는 것을 알게되었습니다. 이 정보는 구성 정보, 장치 현재 방향, 데이터베이스 처리기 등일 수 있습니다.

상호 액세스가 필요한 변수의 경우 등록 정보를 사용할 수 있습니다.

class VC1 : UIViewController { 
    NSString* v1; 
    NSString* v2; 
} 

@property (copy) NSString *v1; 
@property (copy) NSString *v2; 

그리고, 다른보기 :

class VC2 : UIViewController { 
    VC1 *vc1; 
} 

그리고 VC2에서 당신의 메시지 구현이 같은 VC1의 V1 및 V2를 사용할 수있는 :

- (void) someMessage { 
    NSLog(@"VC1's v1 value is %@ and v2 value is %@", [vc1 v1], [vc1 v2]); 
} 

그것이 도움이되기를 바랍니다.

+0

내 변수는 어디에 있으며 한 뷰는 다른 변수의 변수를 어떻게 알 수 있습니까? – Moshe

+0

몇 가지 코드로 내 대답을 업데이트했습니다. 희망이 도움이됩니다. –

+0

좋은데, VC2의 VC1 값은 어떻게 얻습니까? 각 뷰 컨트롤러는 이제 위임을 통해 다른 뷰 컨트롤러를 볼 수 있습니까? – Moshe

1

정보를 다시 보내려는 경우 target-action (UIControl의 방식)을 사용하거나 NSNotifications를 보내거나 일반 위임 프로토콜을 사용할 수 있습니다. 이것이 애플리케이션 전반에 걸쳐 사용하는 정보가 아니라면, 애플리케이션 위임 도구에 퍼팅하는 것은 과도 할 수 있습니다.

+0

이것은보기간에 데이터를 전달하는 빠르고 더러운 방법이지만 바람직하지는 않습니다. 뷰 컨트롤러를 함께 연결하여 앱의 유지 관리 및 확장을 어렵게 만듭니다. – TechZen

+0

매우 명시 적으로 어떤 것도 함께 연결하지 않습니다. 커플 링은 어디에 있습니까? NSNotifications 및 대리인에 대해 –

+0

+1 – Anurag