ios - 未调用 Objective-C UIKit UIAlertViewDelegate
<p><p>我开始学习Objective-C uikit,我遇到了一个问题。UIAlertViewDelegate 没有被调用。谁能告诉我为什么?谢谢你! </p>
<pre><code>#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 = [ initWithTitle:@"alert" message:@"alert test" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];
;
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
NSLog(@"clickedButtonAtIndex = %ld",buttonIndex );
NSString *buttonTitle = ;
NSLog(@"clickedButtonAtIndex title = %@",buttonTitle);
}
@end
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>这是因为您在比应有的更严格的生命周期内分配警报 View ,请尝试将警报设置为 iVar 或属性,然后重试。 </p>
<pre><code>@interface AlertLearn : NSObject <UIAlertViewDelegate>
{
UIAlertView * alertView;
}
-(void) showAlertTest;
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
@end
...
-(void) showAlertTest{
alertView = [ initWithTitle:@"alert" message:@"alert test" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];
;
}
</code></pre>
<p>并从您的 <code>showAlertTest</code> 方法中删除定义。</p>
<p><strong>P.S.</strong>:请注意,从 iOS 8 开始不推荐使用这种显示警报 View ,您应该改用 <code>UIAlertController</code>,但如果出于任何原因您需要支持iOS 7 及以下,好吧,你应该为你的警报做一个强指针。</p></p>
<p style="font-size: 20px;">关于ios - 未调用 Objective-C UIKit UIAlertViewDelegate,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/33052066/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/33052066/
</a>
</p>
页:
[1]