我不知道我的错误在哪里......我已经在我的应用程序的其他视图控制器中使用了这些代码行,并且它可以工作。我设置了断点,如果正确执行并调用[警告显示],则无效!这是我的viewWillAppear方法中的第一行(在[super viewWillAppear ...之后]。
if([self.category isDeleted] || ![((AppDelegate *)[[UIApplication sharedApplication] delegate]).managedObjectContext existingObjectWithID:self.category.objectID error:NULL]){
UIAlertView *warning = [[UIAlertView alloc]initWithTitle:NSLocalizedString(@"CategoryDeletedError", nil) message:NSLocalizedString(@"CategoryDeletedErrorExplanation", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Ok", nil) otherButtonTitles:nil, nil];
[warning show];
NSLog(@"%@",warning);
}
NSLog打印出来:
2014-03-11 10:08:08.133 App[752:70b] <UIAlertView: 0x8a8bb20; frame = (0 0; 0 0); opaque = NO; layer = <CALayer: 0x8aa2d60>>
所以创建了对象..但为什么它不起作用?我的视图控制器也正确地是UIAlertViewDelegate ...
答案 0 :(得分:0)
框架为frame = (0 0; 0 0);
,因此您无法看到它。也许NSLocalizedString
返回空字符串。尝试使用@“CategoryDeletedError”设置标题;如果显示,请检查项目中的本地化字符串文件。
答案 1 :(得分:0)
知道了......发布后我就明白了。警告将在我的viewWillAppear方法之后显示。但是,有一行代码在此if子句之后调用已删除的实体并使应用程序崩溃。因此,我没有在if和if子句中写这个,而是像这样解决了它:
在:
if([self.category isDeleted] || ![((AppDelegate *)[[UIApplication sharedApplication] delegate]).managedObjectContext existingObjectWithID:self.category.objectID error:NULL]){
UIAlertView *warning = [[UIAlertView alloc]initWithTitle:NSLocalizedString(@"CategoryDeletedError", nil) message:NSLocalizedString(@"CategoryDeletedErrorExplanation", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Ok", nil) otherButtonTitles:nil, nil];
[warning show];
NSLog(@"%@",warning);
}
Rest of the code...crashing
现在:
if([self.category isDeleted] || ![((AppDelegate *)[[UIApplication sharedApplication] delegate]).managedObjectContext existingObjectWithID:self.category.objectID error:NULL]){
UIAlertView *warning = [[UIAlertView alloc]initWithTitle:NSLocalizedString(@"CategoryDeletedError", nil) message:NSLocalizedString(@"CategoryDeletedErrorExplanation", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Ok", nil) otherButtonTitles:nil, nil];
[warning show];
NSLog(@"%@",warning);
} else {
Rest of the code
}
答案 2 :(得分:0)
试试吧
if([self.category isDeleted] || ![((AppDelegate *)[[UIApplication sharedApplication] delegate]).managedObjectContext existingObjectWithID:self.category.objectID error:NULL])
{
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *warning = [[UIAlertView alloc]initWithTitle:NSLocalizedString(@"CategoryDeletedError", nil) message:NSLocalizedString(@"CategoryDeletedErrorExplanation", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Ok", nil) otherButtonTitles:nil, nil];
[warning show];
NSLog(@"%@",warning);
});
}