gpt4 book ai didi

ios - 未调用 Objective-C UIKit UIAlertViewDelegate

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:12:06 26 4
gpt4 key购买 nike

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

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface AlertLearn : NSObject <UIAlertViewDelegate>
-(void) showAlertTest;
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)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)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)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)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
@end
...
-(void) showAlertTest{
alertView = [[UIAlertView alloc] initWithTitle:@"alert" message:@"alert test" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];
[alertView show];

}

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

P.S.:请注意,这种显示警报 View 的类型在 iOS 8 中已弃用,您应该改用 UIAlertController,但如果出于任何原因您需要支持iOS 7 及以下版本,嗯,你应该为你的警报做一个强指针。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com