我开始学习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
这是因为您在比应有的更严格的生命周期内分配警报 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 |