2011-10-05 6 views
0

나는 RootviewControllers과 물론 App Delegate를 가지고 있습니다. App Delegate에서 원하는 모든 컨트롤러로 전환합니다.RootviewController에서 AppDelegate로 함수 호출

사용자가 앱 위임자 (-IBAction Deklaration)의 완료 버튼을 누르면 GPS를 사용하지 않도록 설정하려고합니다. 내 RVC에서이 기능을 어떻게 호출 할 수 있습니까?

그 샘플

MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 

을 보았다하지만 난 정말 무엇을 이해하지. 내 RootViewController에

나는이

[self.mapView setShowsUserLocation:NO]; 

-(IBAction) btnLocationDone { 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.7]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown 
          forView:MainView cache:YES]; 

    [UIView commitAnimations]; 

    [MainWindow addSubview:MainView]; 
    [LocationWindow setHidden:YES]; 
    [MainWindow setHidden:NO]; 
    [LocationWindow removeFromSuperview]; 

} 

이 도와주세요이 기능에 앱 위임에서 실행되도록합니다.

답변

0

당신이 묻는 것이 명확하지 않으며 질문의 본질은 당신이 iOS 어플리케이션 아키텍처에 대해 더 잘 이해할 필요가 있음을 의미합니다. UI 상호 작용은 UIViewController 하위 클래스에서만 수행해야하며 UIApplication 대리자는 아니며 시작 및 종료 처리를 포함하는 UIApplication의 (이름에서 알 수 있듯이) 위임 함수 만 담당해야합니다.

btnLocationDone이 앱 대리인에 있어야하는 이유는 없습니다. 선택한 아키텍처에 따라 UIViewController의 공유 수퍼 클래스 또는 조정 개체에 배치하는 것이 좋습니다.

클래스 이름 만 대문자로 시작하는 것이 좋습니다.

당신은 당신이 단지 수 IBAction가 뷰 컨트롤러를 호출 할 때 앱 위임에 btnLocationDone을 실행하려면 다음

- (IBAction)done { 
    [self.mapView setShowsUserLocation:NO]; 
    MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [delegate btnLocationDone]; 
} 
+0

내가 아이폰 개발에서 완전히 새로운 오전 (나에게 많은 도움이 주셔서 감사합니다). 다음 신청서를 작성하면 귀하의 성명을 따를 것입니다. 그러나 AppDelegate에서이 IBActions를 수행하면 잠시 사과가 내 앱을 거부합니까? – CaspervanDoorn

+0

애플은 구조가 제대로되어 있지 않기 때문에 앱을 거부하지 않을 것입니다. 그러나 잘못 구성된 앱에는 거부 될 수있는 다른 문제가있을 수 있습니다. MVC (Smalltalk/Objective-C 스타일의 MVC)를 읽고 적절한 형식의 Apple 예제를 검토하는 것이 좋습니다. –

+0

고마워, 내가 그럴거야;) – CaspervanDoorn