未调用 appdelegate 中的 clickedButtonAtIndex

Posted

技术标签:

【中文标题】未调用 appdelegate 中的 clickedButtonAtIndex【英文标题】:clickedButtonAtIndex in appdelegate is not called 【发布时间】:2011-08-11 13:53:25 【问题描述】:

我在 MyapplicationAppDelegate.m 文件中使用 2 个按钮“取消”和“确定”调用 UIAlert,警报被调用但点击“取消”或“确定”按钮

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

方法未被调用。

我在 MyapplicationAppDelegate.h 文件中添加了 UIAlertViewDelegate,如下所示

#import UIKit/UIKit.h
@interface MyapplicationAppDelegate: NSObject UIApplicationDelegate,UIAlertViewDelegate

..

我想知道还需要什么。

【问题讨论】:

【参考方案1】:

我不确定您在发布问题时是否拼写错误,但您应该在 <.. ..>

内致电代表
@interface MyapplicationAppDelegate: NSObject <UIApplicationDelegate,UIAlertViewDelegate>  .. 

这是 UIAlertView 的示例代码

UIAlertView *myAlertView = [[UIAlertView alloc]initWithTitle:@""message:@"Your message goes here" delegate:self cancelButtonTitle:@"OK"otherButtonTitles:nil];
    [myAlertView show];
    [myAlertView release];

我不确定 myAlertView.delgate = self 是正确的方法,但我确实使用 initWithTitle 设置委托

【讨论】:

与您的回答中提到的相同,但让我再检查一次。【参考方案2】:

对我来说,

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

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil 
                             message:@"Say Yes or NO?" delegate:appDelegate 
                             cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
    alertView.tag = 1;
    [alertView show];
    [alertView release];

做这个伎俩!

现在它进入 AppDelegate 文件中的 -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex; 而不添加,

@interface MyapplicationAppDelegate: NSObject <UIApplicationDelegate,UIAlertViewDelegate>  .. 

【讨论】:

以上是关于未调用 appdelegate 中的 clickedButtonAtIndex的主要内容,如果未能解决你的问题,请参考以下文章

强制终止后未调用 AppDelegate 方法

使用 Firebase 云消息传递 (FCM) 时未调用 AppDelegate 方法

motionBegan:withEvent: 在 iOS 10 的 AppDelegate 中未调用

从小部件打开主机应用程序时未调用 AppDelegate 函数(今日扩展)

Swift 3 / Xcode 8 beta 6 中未调用 UIApplicationShortcutItem 的 AppDelegate 函数

从深层链接启动应用程序时未调用 AppDelegate ContinueUserActivity,应归咎于 Firebase SDK