2011-06-22 7 views
1

ユーザーがタブバー項目を押したときにUIAlertViewが呼び出されたときに実際のタブを変更するかどうかを尋ねるときに、UIAlertViewがコードを停止しないようにしたい答えを得るまで、コードは実行し続け、前の値に応じて、実際のものではなくviewcontrollerを変更します。UIAlertViewでTabbar viewcontrollerを変更できないようにする

私はしばらくの間、答えを待つようにしましたが、画面が暗くなり、警告がポップアップしませんでした。私もこの投稿を読むpause code execution until UIAlertview、私は試みたが、私はそれを動作させることができなかった、誰かが助けてくれる、ありがとう!

- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ 

if (([self Myfunction]) && (viewController != [tabBarController.viewControllers objectAtIndex:0])){ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"text1" message:@"text2" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 
    [alert show]; 
    [alert release]; 

    return boolean_var; 
} 

return YES;} 

- (void)alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex{ 
if (buttonIndex == 0) [self setBoolean_var:NO]; 
else [self setBoolean_var:YES];} 
+1

おい、私は質問に私を打つ...ありがとう! – Rasman

答えて

3
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 
    if (!([self Myfunction]) || (viewController == [tabBarController.viewControllers objectAtIndex:0])) { 
     return YES; 
    } 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"text1" message:@"text2" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 
    [alert show]; 
    [alert release]; 

    candidateViewController = viewController; // `candidateViewController` must be declared as an instance variable. 

    return NO; 
} 

あなたは警告を表示し、candidateViewControllerでそれを保存して、スイッチを遅らせるためにNOを返す必要がコントローラを表示している識別します。アラートビューでの応答に基づいて、それを変更する必要があります。

- (void)alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex != 0) 
     self.tabBarController.selectedViewController = candidateViewController; 
} 

最後の方法はほとんど想定していません。あなたのタブバーコントローラはself.tabBarControllerによって参照され、boolean_varを以前の方法に戻すように設定していたとします。その方法ではアラートビューは非ブロックであるため、boolean_varを使用するのは無意味です。

+0

これは完璧に動作します!ありがとう!ブール値がどれほど役に立たなかったかわかります... – Uris

関連する問題