2012-01-13 8 views
0

MainWindow.xibに5つのタブを表示しているタブバーコントローラを追加し、タブバーコントローラの代理人メソッド:shouldSelectViewControllerは、ブール値(YESまたはNO)を返す私のアプリケーションデリゲートにあります。alertview delegateメソッドからBOOL値を返す:alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

この代理メソッドでは、ユーザーに警告を表示しています(ユーザーがタブ1から他のタブに移動している場合)。このアラートには、[OK]と[キャンセル]の2つのボタンがあります。

ユーザーが[OK]をクリックすると、デリゲートメソッドがYES(ユーザーが別のタブに移動できるように)を返すようにし、ユーザーがキャンセルを選択した場合(タブ1のみを使用したい場合)メソッドがNOを返すようにします。

基本的には、shouldSelectViewControllerメソッドが、画面上に警告が表示されるまで実行を停止します。私のアラートビューのデリゲートメソッドからBOOLを返すことができる方法はありますか?これは、shouldSelectViewControllerまたはこの状況に使用できるスレッド化ソリューションによって返されることがありますか?

答えて

2

は.M

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 
tmpController = viewController; 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 
[alert show]; 
[alert release]; 
return NO; 
} 

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

天才イゴールでの.h

UIViewController *tmpController; 

でこの

を試してみてください。それは人を働かせた。どうもありがとう。 :) – anshul

+0

のために。 :) –

関連する問題