在这种情况下我应该使用全局布尔变量吗?

时间:2012-02-13 10:18:59

标签: iphone ios uiviewcontroller global-variables uialertview

我有一个viewcontroller(比如A)。我正在推动第一个viewcontroller(A)上的一些viewcontrollers。完成一些任务后,我将切换回第一个视图控制器(A)。也就是说,我弹出到rootviewcontroller(A)。但是这次我的viewcontroller(A)应该有一个alertview。

我的问题:在这种情况下,设置一个全局布尔变量是正确的方法。我的意思是,我声明一个全局布尔变量,只有在弹出viewcontrollers时才设置为true。我有更好的办法吗?

3 个答案:

答案 0 :(得分:1)

当你来到ViewController时,你可以使用Global NSString(或BOOL)来显示AlertView 在下面的代码中,我使用了String变量 在AppDelegate.h Class

中声明一个NSString变量
NSString * checkAlert;
//make property of that NSString.
@property(retain,nonatomic)NSString * checkAlert;

在AppDelegate.m中

//synthesize checkAlert
@synthesize checkAlert;

checkAlert=@"NotNeed";

然后在ViewController

-(void)ViewWillAppear{
// here check if checkAlert contains string as you want
if(checkAlert isEqualToString:@"showAlert"){
 //here show the AlertView
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"AlerViewmessage" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

    [alert show];
    [alert release];
}
}

//when you abou to navigate to another ViewController the Access that checkAlert String    as
-(void)goToAnotheViewController{
AppDelegate* appdele=(AppDelegate*)[[UIApplication sharedApplication]delegate];
appdele.checkString=@"showAlert";

//then navigate to viewController
[self.navigationController pushViewController: animated:YES];
}

//you just need to compare checkString's value string . 

它会起作用

答案 1 :(得分:0)

您也可以将其保存在NSUserDefaults中。 在ViewController中:

NSUserDefaults *prefs = [NSUserDefaults  standardUserDefaults];
[prefs setBool:YES forKey:@"some_key"];

viewWillAppear中的另一个ViewController中,例如:

NSUserDefaults *prefs = [NSUserDefaults  standardUserDefaults];
BOOL val = [prefs boolForKey:@"some_key"];

答案 2 :(得分:0)

您还可以将您的第一个视图控制器设置为全局变量,例如在AppDelegate中,您可以通过

访问它

(YourAppDelegate*)[UIApplication sharedApplication].firstViewController

然后在弹出后调用DisplayAlert函数。

或者您可以将第一个视图控制器传递给所有后续推送的视图控制器作为“主视图控制器”,然后调用该函数而不需要全局变量。

或者您可以通过调用

访问根视图控制器

[self.navigationController.viewControllers objectAtIndex:0]

然后调用它上面的警报功能。