가속시기시기 컨트롤러에서 뷰 변화 작동을 아웃소싱하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/826933

문제

보기 컨트롤러 클래스가 있습니다. 가속도계가 움직임을 감지하고 가속도계를 호출 할 때 내 관점에서 몇 가지 일을하고 싶습니다 : didaccelerate : method in the delegate 객체.

그 대표 대상은 여기 내 뇌의 문제입니다. 현재, 내 뇌는 얼고 더 나은 것을 얻지 못합니다. 당신이 무슨 생각을하는지 제게 알려주세요!

솔루션 1) 내보기 컨트롤러 클래스 I에서 i는 uiaccelerometerdelegate 프로토콜을 준수하고 해당 가속도계를 구현합니다 : didaccelerate : method. -ApplicationDidFinishLaunching : 내 AppDelegate 클래스의 메소드 I에서는 컨트롤러 객체를 가속시 수신 방법 호출 대의원으로 설정합니다. 나는 그것이 정말 좋지 않다고 생각합니다.

솔루션 2) 나는 accelerationdelegate라는 빈 새 개체를 만듭니다. 해당 uiaccelerometerdelegate protocol을 준수하고, 그 가속도계 : didaccelerate : method and at -applicationDidFinishLaunching : 내 AppDelegate 클래스의 메소드 나는 메서드 호출 수신을위한 위임자로 컨트롤러 개체를 설정했습니다. 가속시.

그러나 솔루션 2를 위해 내 뇌가 조금 붙어있었습니다! 해당 객체 내부의 View Controller에서 View Objects에 어떻게 액세스합니까?

여기서 문제는 주변에 하나 이상의 뷰 컨트롤러가 있다는 것입니다. 탭 바 컨트롤러를 사용하여 간격을 전환합니다.

내가 어떻게 제대로 얻을 수 있는지 제안하는 것이 있습니까?

도움이 되었습니까?

해결책

가속이 하나의 뷰 컨트롤러에만 해당되는 경우 뷰 컨트롤러가 자체 하위 뷰를 변경하는 데 필요한 정보를 수신하도록하는 것이 합리적입니다. 그러나보기 컨트롤러를 뷰가 나타날 때 대의원으로 설정하고 사라질 때 대의원을 NULL로 설정하는 것이 좋습니다. (구체적으로, - (void) viewWillAppear: 그리고 - (void) viewWillDisappear:)

다른 팁

두 번째 방법이 더 좋다는 데 동의합니다. 현재 선택한 탭보기 또는 앱의 특정보기 만 액세스하려고합니까?

어쨌든, 내가 할 일은 당신을위한 속성을 설정하는 것입니다. UITabViewController 당신의 UIApplicationDelegate 대의원에서 액세스 할 수 있도록 [[UIApplication sharedApplication] delegate]). 예를 들어:

YourApplicationDelegate *appDelegate = (YourApplicationDelegate *)[[UIApplication sharedApplication] delegate];
FirstUIViewController *firstViewController = appDelegate.firstViewController;
[firstViewController doStuff];

어디 firstViewController 대의원의 재산입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top