2012-02-07 1 views
0

UITabBarController 안에 다른 탭으로 이동하기 전에 사용자가 특정 단계를 완료해야하는 경우가 있습니다. 따라서 사용자가 다른 탭에서 뭔가를 탭하고 탭하면 "다른 탭으로 이동하기 전에"라고 말하면서 UIAlertView을 표시하고 싶습니다.사용자가 다른 탭으로 변경하기 전에 만족해야 할 조건을 부여하십시오.

이 조건을 확인하고 다른보기 컨트롤러로 이동을 취소 할 수 있습니까? 당신이이입니다 찾을 수 있습니다

- (void)viewWillDisappear:(BOOL)animated { 
    self.tabBarController.selectedIndex = 0; 
} 

: 당신은 당신이 그들을 유지하려는보기로 탭 표시 줄 컨트롤러에 선택된 인덱스를 그 탈출구의에서보기를 잡기 및 변경을 시도 할 수 추측에서

답변

3

물론 가능합니다. AppDelegate 클래스에 tabbar 컨트롤러가 있다고 가정합니다. 그렇다면 AppDelegate를 위임자로 설정하십시오. 그런 다음 다음 메소드를 구현하십시오.

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 
    // place all the checks here 
    EditingViewController *editingController = //link to controller where editing is being made. 
    if (editingController && editingController.isEditing) { 
    //UIAlertView 
    return NO; 
    } 
    return YES; 
} 
+0

스팟! Eugene에게 감사드립니다 !!! – doNotCheckMyBlog

0

하지만 이벤트의 순서에 따라 비트 육포, 빠른 구글은 당신이 당신의 뷰 컨트롤러를 만들 수 있습니다 경우 UITabBarControllerDelegate 후 구현할 수 있음을 발견했습니다

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 

이전에 그들을 따라 잡을 수 것이다. App Delegate에서 이것을 구현하는 것이 가장 간단하고 변경을 허용해야하는지 알 수 있습니다 (또는 확인).

관련 문제