appdelegate.m中的UIAlertView不起作用

时间:2011-12-22 08:40:04

标签: ios alertview

我一直在谷歌搜索这个问题差不多整整一天,没有更接近解决方案,所以我想问你们......:)

我正在开发一个iOS应用程序,该应用程序应通过WiFi连接到mbed,并在用户连接时为用户提供对话框,如果没有,如果没有,则为用户提供重试的可能性。 我的问题是,我已经在appdelegate.m中实现了连接方法,它是从这里我想显示警报..

它自动工作的警报很好,但我在检测按下按钮时遇到问题,没有调用clickedButtonAtIndex。

我在appdelegate.h中添加了UIAlertViewDelegate,如下所示:

@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate, UIAlertViewDelegate> 

并在alertview中将委托设置为self,如下所示:

alert_NOT = [[UIAlertView alloc] initWithTitle:@"Not connected!" message:message_to_user delegate:self cancelButtonTitle:@"Try again" otherButtonTitles: nil];
    [alert_NOT show];
    [alert_NOT release]

并且clickedButtonAtIndex看起来像

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"test");

}

所以我希望在警报视图中按下按钮时在日志中看到“测试”一词,但没有任何反应。

更新: 尝试在我的“FirstViewController.m”中实现它并在那里工作:S但是如果可能的话我非常希望在appdelegate.m中有它..

4 个答案:

答案 0 :(得分:1)

@interface urAppDelegate : NSObject <UIApplicationDelegate,UIAlertViewDelegate>

如果您合成了alert_not,那么就像使用self一样使用它:

self.alert_NOT = [[UIAlertView alloc] initWithTitle:@"Not connected!" message:message_to_user delegate:self cancelButtonTitle:@"Try again" otherButtonTitles: nil];

[alert_NOT show];
[alert_NOT release];

答案 1 :(得分:1)

我目前正在研究类似的实现,并希望与您分享我的想法:可能使用在您的委托条件得到满足时触发的NSNotification,可以在您的VC中监听并处理适当地,使用警报视图,在堆栈的顶部。

答案 2 :(得分:0)

您应该使用alertViewCancel方法。

- (void)alertViewCancel:(UIAlertView *)alertView
{
    NSLog(@"text");
}

答案 3 :(得分:0)

定义如下:

#define appDelegate ((AppDelegate*)[UIApplication sharedApplication].delegate)

并提醒:

UIAlertView *alert_NOT = [[UIAlertView alloc] initWithTitle:@"Not connected!" message:message_to_user delegate:appDelegate cancelButtonTitle:@"Try again" otherButtonTitles: nil];
[alert_NOT show];

这里将委托设置为已定义的关键字,即appDelegate。

希望这有帮助。