OStack程序员社区-中国程序员成长平台

标题: ios - 未调用 Objective-C UIKit UIAlertViewDelegate [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 11:19
标题: ios - 未调用 Objective-C UIKit UIAlertViewDelegate

我开始学习Objective-C uikit,我遇到了一个问题。UIAlertViewDelegate 没有被调用。谁能告诉我为什么?谢谢你!

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface AlertLearn : NSObject <UIAlertViewDelegate>
-(void) showAlertTest;
- (void)alertViewUIAlertView *)alertView clickedButtonAtIndexNSInteger)buttonIndex;
@end

#import "AlertLearn.h"
#import <UIKit/UIKit.h>

@implementation AlertLearn

-(void) showAlertTest{
    UIAlertView * alertView = [[UIAlertView alloc] initWithTitle"alert" message"alert test" delegate:self cancelButtonTitle"cancel" otherButtonTitles"ok", nil];
    [alertView show];

}
- (void)alertViewUIAlertView *)alertView clickedButtonAtIndexNSInteger)buttonIndex{

    NSLog(@"clickedButtonAtIndex = %ld",buttonIndex );
    NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];
    NSLog(@"clickedButtonAtIndex title = %@",buttonTitle);
}
@end



Best Answer-推荐答案


这是因为您在比应有的更严格的生命周期内分配警报 View ,请尝试将警报设置为 iVar 或属性,然后重试。

@interface AlertLearn : NSObject <UIAlertViewDelegate>
{
UIAlertView * alertView;
}
-(void) showAlertTest;
- (void)alertViewUIAlertView *)alertView clickedButtonAtIndexNSInteger)buttonIndex;
@end
...
-(void) showAlertTest{
    alertView = [[UIAlertView alloc] initWithTitle"alert" message"alert test" delegate:self cancelButtonTitle"cancel" otherButtonTitles"ok", nil];
    [alertView show];

}

并从您的 showAlertTest 方法中删除定义。

P.S.:请注意,从 iOS 8 开始不推荐使用这种显示警报 View ,您应该改用 UIAlertController,但如果出于任何原因您需要支持iOS 7 及以下,好吧,你应该为你的警报做一个强指针。

关于ios - 未调用 Objective-C UIKit UIAlertViewDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33052066/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4