appdelegate.m 中的 UIAlertView 不起作用
Posted
技术标签:
【中文标题】appdelegate.m 中的 UIAlertView 不起作用【英文标题】:UIAlertView in appdelegate.m does not work 【发布时间】:2011-12-22 08:40:03 【问题描述】:我已经在谷歌上搜索了将近一整天的时间,但没有找到任何解决方案,所以我想问你们.. :)
我正在开发一个 ios 应用程序,该应用程序应通过 WiFi 连接到 mbed,并在连接时为用户提供一个对话框,如果未连接,则为用户提供重试的可能性。 我的问题是现在我已经在 appdelegate.m 中实现了连接方法,我想从这里显示警报..
它自己的警报工作正常,但是我在检测按下按钮时遇到问题,没有调用 clickedButtonAtIndex。
我在 appdelegate.h 中添加了 UIAlertViewDelegate,如下所示:
@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate, UIAlertViewDelegate>
并在警报视图中将委托设置为 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 中..
【问题讨论】:
【参考方案1】:我目前正在研究类似的实现,并想与您分享一个想法:也许使用 NSNotification 在您的委托条件得到满足时触发,可以在您的 VC 中侦听并处理适当地,在堆栈顶部带有警报视图。
【讨论】:
【参考方案2】:@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];
【讨论】:
嗯,还是什么都没有。在 UIAlertView 的声明中,委托被设置为 self。 那也无济于事。我设法自己解决了这个问题,方法是在我的视图控制器中实现警报系统,该系统与我的代码一起使用,然后从我的 appdelegate 请求所需的方法.m . 像魅力一样工作。但是非常感谢您的快速响应..【参考方案3】:您应该为此使用 alertViewCancel 方法。
- (void)alertViewCancel:(UIAlertView *)alertView
NSLog(@"text");
【讨论】:
【参考方案4】:定义如下:
#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];
这里将delegate设置为定义的关键字,即appDelegate。
希望这会有所帮助。
【讨论】:
以上是关于appdelegate.m 中的 UIAlertView 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
从 AppDelegate.m 中的 applicationDidEnterBackground 中去掉键盘
appdelegate.m 中的 UIAlertView 不起作用
如何从 Xcode 中的 AppDelegate.m 文件更新 UILabel 的文本?