appdelegate.m中的UIAlertView不起作用

问题描述 投票:2回答:4

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

我正在开发一个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");

}

因此,当我在alertview中按下按钮时,我希望在日志中看到“test”这个词,但没有任何反应。

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

ios alertview
4个回答
1
投票

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


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];

0
投票

您应该使用alertViewCancel方法。

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

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。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.