1

我是 iOS 新手,在以编程方式关闭UIAlertView时遇到问题。

我在 .h 文件中声明了警报:

@interface ViewController : UIViewController<UIWebViewDelegate>{
    UIWebView *webView;
    UIAlertView *alert;
}

@property(nonatomic, retain) IBOutlet UIWebView *webView;
@property(nonatomic, retain) IBOutlet UIAlertView *alert;

在 .m 文件中,我使用此警报警告用户有关互联网连接的信息:

@synthesize alert;
-(void) checkNetworkStatus:(NSNotification *)notice
{
// called after network status changes
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
switch (internetStatus)
{
    case NotReachable:
    {
        NSLog(@"The internet is down.");
        self.internetActive = NO;
        alert = [[[UIAlertView alloc] initWithTitle:@"Network Unavailable" 
                                                         message:@"Internet connectivity could not be established!" 
                                                        delegate:self 
                                               cancelButtonTitle:nil 
                                               otherButtonTitles:nil] autorelease];
        [alert show];
        break;
    }
    default:
    {
        [alert dismissWithClickedButtonIndex:0 animated:NO];

    }
}

}

现在,当互联网连接断开时,会出现警报。但是,当互联网连接建立时,程序会抛出异常,抱怨对对象的访问不正确。谁能告诉我我做错了什么?

4

3 回答 3

1

1-在你的头文件中实现 UIAlertViewDelegate

2-使用这种方法

 -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{

}

在此方法中,根据单击按钮的索引关闭警报视图

于 2012-07-18T14:01:07.113 回答
0
[alert dismissWithClickedButtonIndex:0 animated:NO];  

在所有其他情况下都会调用,并且在调用该方法时还没有为 alert 分配任何内存。也没有必要添加那条线。或者你可以像这样修改你的代码。

  1. 保留对警报的引用(尽管这是一个非常糟糕的主意)
  2. 在切换条件中检查是否显示了警报框,然后调用解除并释放警报视图
于 2012-07-18T13:49:43.920 回答
0

这应该有效:

    default:
    {
        if (alert){
            [alert dismissWithClickedButtonIndex:0 animated:NO];
        }
    }

假设“警报”在你展示之前确实是“零”。

于 2012-07-18T13:59:32.317 回答