菜鸟教程小白 发表于 2022-12-13 11:19:12

ios - 未调用 Objective-C UIKit UIAlertViewDelegate


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

<pre><code>#import &lt;Foundation/Foundation.h&gt;
#import &lt;UIKit/UIKit.h&gt;
@interface AlertLearn : NSObject &lt;UIAlertViewDelegate&gt;
-(void) showAlertTest;
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
@end

#import &#34;AlertLearn.h&#34;
#import &lt;UIKit/UIKit.h&gt;

@implementation AlertLearn

-(void) showAlertTest{
    UIAlertView * alertView = [ initWithTitle:@&#34;alert&#34; message:@&#34;alert test&#34; delegate:self cancelButtonTitle:@&#34;cancel&#34; otherButtonTitles:@&#34;ok&#34;, nil];
    ;

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

    NSLog(@&#34;clickedButtonAtIndex = %ld&#34;,buttonIndex );
    NSString *buttonTitle = ;
    NSLog(@&#34;clickedButtonAtIndex title = %@&#34;,buttonTitle);
}
@end
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这是因为您在比应有的更严格的生命周期内分配警报 View ,请尝试将警报设置为 iVar 或属性,然后重试。 </p>

<pre><code>@interface AlertLearn : NSObject &lt;UIAlertViewDelegate&gt;
{
UIAlertView * alertView;
}
-(void) showAlertTest;
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
@end
...
-(void) showAlertTest{
    alertView = [ initWithTitle:@&#34;alert&#34; message:@&#34;alert test&#34; delegate:self cancelButtonTitle:@&#34;cancel&#34; otherButtonTitles:@&#34;ok&#34;, 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]
查看完整版本: ios - 未调用 Objective-C UIKit UIAlertViewDelegate