2010-06-30 2 views
1

원래 주 NIB에서 모든 것을 원래 만들었으므로이 문제가 발생합니다. 그러나 하위보기를 사용하는 것이 더 좋습니다.UIView (하위보기)가 AppDelegate에 IBActions를 보내지 않습니다.

AppDelegate에서 IBActions가 있는데, 서브 뷰를 성공적으로 연결하고로드했습니다. 그러나 하위 뷰의 단추를 AppDelegate의 IBActions에 연결하려고하면 IBActions가 "첫 번째 응답자"아래에 나타납니다. 그들은 잘 연결하는 것,하지만 응용 프로그램을 실행할 때 그들은 IBActions를 트리거하지 않습니다. (IBActions 내의 코드에서 오류가 아닌 NSLog를 확인했습니다). 내가 도대체 ​​뭘 잘못하고있는 겁니까?

감사합니다.

답변

1

AppDelegate는 UIApplicationDelegate 프로토콜 (즉, applicationDidFinishLaunching과 같은 메소드)을 구현하거나 경우에 따라 전역 변수를 저장하는 것과 같은 매우 구체적인 항목에만 사용해야합니다.

IBActions와 다른 아웃렛을 각각의보기 컨트롤러 파일에 보관해야합니다 (예 : 버튼, 이미지 등이있는 MyViewController.xib와 연결된 MyViewController.h 및 MyViewController.m을 만든 경우). 그런 다음 원하는 속성 관리자 (예 : TouchUpInside)를 파일 소유자에게 드래그하여 연결할 수 있습니다. 당신이 더 잘 볼 컨트롤러를 이해하기 위해 읽어야

뭔가 : 일반적으로 http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

는 각각의 고유 한 뷰 컨트롤러를 작성하는 것이 좋습니다 당신이 사용자에게 제공됩니다 볼 수 있습니다. 예를 들어, 메인 화면이 있고 "about"또는 설정 화면이 있다면 각각의보기 컨트롤러를 만들 것입니다. 그것은 당신이 숨기거나 보여주는 서브 뷰 전체를 가지고 하나의 뷰를 사용하는 것보다 더 잘 정리하는 데 도움을 주며 또한 로딩 시간과 일반적인 성능을 향상시킵니다. 응용 프로그램의 위임에 액세스하는 방법에 대한 코멘트에서 두번째 질문에 대한

업데이트 :

먼저, 당신은 당신을 제기하는 .m 중 뷰 컨트롤러에 애플 대리자에 대한 .H 파일 (예 : #import "AppDelegate.h")를 가져와야 app 위임 파일에 저장 한 변수, 배열 등을 액세스하는 데 사용하고 싶습니다. App Delegate의 .m 파일에있는 App Delegate의 .h 파일에서 생성 한 객체를 합성하여 getter 및 setter가 만들어 지도록합니다 (액세스 할 수 있도록). 그런 다음 뷰 컨트롤러하는 .m 파일에

, 어떤 방법으로 사용됩니다 도움이

-(void)someMethod { 
// here we just create a shortcut to the app delegate called "theAppDelegate" 
YourAppDelegateFileNameHere *theAppDelegate = (YourAppDelegateFileNameHere *)[[UIApplication sharedApplication] delegate]; 

// now you can use the dot notation if you wanna access a variable 
int SomeNewInteger = theAppDelegate.someIntegerYouHaveStored; 

// or some array you have stored 
return [theAppDelegate.someArrayYouCreated count]; 
} 

희망!

+0

고마워요! 뷰 컨트롤러의 AppDelegate에서 개체에 액세스하는 것은 어떻습니까? 나는 AppDelegate를 이렇게 선언했다. // Interface AppDelegate * appDelegate; @property (비 원자력, 보유) AppDelegate * appDelegate; // 구현 @synthesize appDelegate; appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate]; 아직 작업을 시도 할 때마다 "알 수없는 getter 메소드에 액세스"합니다. 죄송합니다 stackOverflow 내 코멘트를 정중하게 형식을 알려주지 않을 것입니다. –

+0

올바르게 호출하는 방법은 업데이트 된 응답을 참조하십시오.속성을 설정하거나 수행 방법과 같이 합성 할 필요가 없으므로 (이는 알 수없는 getter 메서드 오류가 발생하는 이유이므로) 응용 프로그램 대리인과 조금 다릅니다. – iwasrobbed

+0

P. 대답이 유용 할 경우 가장 유용한 답변을 upvoting하는 습관을 가지십시오. 그것은 사람들이 여기 주위에 도움을 위해 뒤쪽에 가볍게 두는 것과 같습니다 :) – iwasrobbed