我想在用户位于特定位置时在我的应用中显示提醒视图。另外,我只想呈现此警报视图一次。为了这, 我有以下代码:
if(!hasShownAlertview && GMSGeometryContainsLocation(userLocation.coordinate, testPath, YES)){
hasShownAlertview = YES;
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message@"Body" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *yesAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"YES", nil) style:UIAlertActionStyleDefault handler:
^(UIAlertAction *action){
}];
UIAlertAction *noAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"NO", nil) style:UIAlertActionStyleDefault handler:
^(UIAlertAction *action){
}];
[alertController addAction:noAction];
[alertController addAction:yesAction];
[self presentViewController:alertController animated:YES completion:nil];
}
}
问题是:如果我转到另一个ViewController,当用户仍在该位置时,会在该ViewController上再次显示警报视图。这背后的原因是hasShownAlertview
在新的ViewController出现之前被设置回NO,因此警报视图再次显示。
我该如何解决这个问题?
答案 0 :(得分:0)
您可以在hasShownAlertview
中声明appdelegate
,并可以在应用中的任何位置使用它来检查是否为是。你应该强烈参考那个属性,因此它不是dealloc。
答案 1 :(得分:0)
通过在hasShownAlertview
文件中将static
声明为.m
来解决此问题。
答案 2 :(得分:0)
如果你想在多个文件中使用静态hasShownAlertView
变量,你应该这样做。
在Appelegate.h
,delcare
@property (assign) bool hasShownAlertView;
在您要检查或更改值的任何文件中,您都可以通过
获取hasShownAlertView
变量
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
bool hasShownAlertView = appDelegate.hasShownAlertView;