我一直在谷歌搜索这个问题差不多整整一天,没有更接近解决方案,所以我想问你们......:)
我正在开发一个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中有它..
答案 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。
希望这有帮助。