iOS初学者:带3个按钮的UIAlertView窗口>检查按下了什么按钮

6 indexing methods objective-c uialertview

我有一个教程的工作代码,但完全不理解它.

情况:

在我的iPhone应用程序中按下按钮后,会出现带有三个按钮的AlertView.现在我想检查用户按下的按钮.

指南代码:

- (IBAction)infoButtonPressed:(id)sender {

    UIAlertView *myAlert1 = [[UIAlertView alloc]initWithTitle:@"My Alert View 1" 
                                                   message:@"Here we go" 
                                                  delegate:self 
                                         cancelButtonTitle:@"Cancel" 
                                         otherButtonTitles:@"Option1", @"Option2", nil];

    [alert show];
}





- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    NSLog(@"Button: %i, was pressed.", buttonIndex);
}
Run Code Online (Sandbox Code Playgroud)

代码工作,我在控制台中看到正确的输出作为NSLog但该方法怎么可能:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    NSLog(@"Button: %i, was pressed.", buttonIndex);
}
Run Code Online (Sandbox Code Playgroud)

指的是正确的警报视图.在这种情况下:myAlert1.

如何使用多个警报视图.例如,第二个调用myAlert2.

我知道下面的代码不正确,但如果我按如下方式编写方法,对我来说会更有意义:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    NSLog(@"Button: %i, was pressed.", buttonIndex_FROM_myAlert1);
}
Run Code Online (Sandbox Code Playgroud)

希望你能帮忙,让我疯狂.

此致,马克

Ole*_*ann 8

该方法如何引用正确的警报视图?

正是出于这个原因,委托方法alertView:didDismissWithButtonIndex:实际上告诉您它所引用的警报视图.请注意,该方法有两个参数.第二个告诉你按钮索引,第一个指向此按钮索引引用的警报视图.

如果您有多个共享同一委托的警报视图,则必须检查第一个参数,即警报视图.为了能够这样做,您必须将警报视图存储在ivar/property或其他数据结构中,以便在委托方法中记住它们.(或者,因为UIAlertView是子类UIView,您可以使用该tag属性来区分多个视图).