我正在制作一个应用程序,如果网页未加载,则会出现错误并返回上一屏幕。但是,这样做之后,在所有代码之后,获得了一个未声明的标识符
#pragma mark - View lifecycle
- (void)viewDidLoad
{
UIAlertView *cats = [[UIAlertView alloc] initWithTitle:@"**Read this first!**"
message:@"Thank you for ..."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[cats show];
[catscroll setScrollEnabled:YES];
[catscroll setContentSize:CGSizeMake(320,4800)];
[catscroll setPagingEnabled:NO];
[catform loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.petfinder.com/s/showPage.do?siteId=76333&pageId=7133416&shelterId=MA84&navigateToPage=Adopt%20Pets"]]];
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)doPop
{
[cats dissmissWithClickedButtonIndex:-1 animated:YES];
[self.navigationController popViewControllerAnimated:YES];
UIAlertView *noconnectcatform = [[UIAlertView alloc] initWithTitle:@"Check your connection!"
message:@"Cannot connect to FPP Servers.\nPlease check your Internet Connection\nYou may not proceed until you are connected via a cellular network."
delegate:nil cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[noconnectcatform show];
}
如您在这张图片中看到的。如果未加载该网页,则会激活doPop,它会返回视图并显示一条消息。但是,这将引发EXC_BAD_ACCESS,因为如您所见,在viewDidLoad方法下,还有另一条消息正在播放。该应用程序变得混乱和崩溃。我试图通过消除doPop方法中的警报来解决此问题,但是很奇怪,它给了我这个错误。我可能会误会,但不是在显示“ UIAlertView * cats”的地方定义了alertview?为什么说它未在doPop方法中定义?请帮忙!
最佳答案
对象cats
在本地定义为viewDidLoad
。变量的范围不会超出方法范围,因此doPop
不知道猫是什么。
将要在.h文件中定义的cats
移动为成员/类变量。
这意味着您需要从UIAlertView *
内删除viewDidLoad
并仅引用cat(按原样,您正在定义范围为viewDidLoad
的另一个变量)。
您在doPop
中调用的方法中有错别字方法是dismissWithClickedButtonIndex:1 animated:YES];
您有dissmissWithClickedButtonIndex:1 animated:YES];
另外,您只需要用IBOutlet
定义的@property
关于iphone - 声明了未声明的标识符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11111698/