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

Objective c iOS初学者:带3个按钮的UIAlertView窗口>;检查按下了什么按钮,objective-c,methods,indexing,uialertview,Objective C,Methods,Indexing,Uialertview,我有一个教程中的工作代码,但不完全理解它 情况: 在我的iPhone应用程序中按下一个按钮后 此时会出现一个带有三个按钮的AlertView。 现在我想检查一下用户按下了什么按钮 教程中的代码: - (IBAction)infoButtonPressed:(id)sender { UIAlertView *myAlert1 = [[UIAlertView alloc]initWithTitle:@"My Alert View 1"

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

情况:

在我的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);
}
代码正常工作,我在控制台中看到正确的输出是NSLog,但这怎么可能呢 该方法:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    NSLog(@"Button: %i, was pressed.", buttonIndex);
}
指的是正确的警报视图。在本例中:myAlert1

使用多个警报视图会怎么样。 例如,第二个调用myAlert2的

我知道下面的代码是不正确的,但它对我来说更有意义 如果我把方法写如下:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    NSLog(@"Button: %i, was pressed.", buttonIndex_FROM_myAlert1);
}
希望你能帮忙,让我发疯

问候,, 马克

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

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


如果有多个警报视图共享同一个委托,则必须对照第一个参数检查这是关于哪个警报视图的。要做到这一点,您必须将警报视图存储在ivar/属性或其他数据结构中,以便在委托方法中记住它们。(或者,由于
UIAlertView
UIView
的子类,因此可以使用
标记
属性来区分多个视图)

谢谢,奥立,现在明白了。古滕·鲁奇是新来的!(德语表示新年快乐);-)除了你的回答之外,我刚刚发现了一篇关于多个警报视图以及如何区分它们的好文章+代码。仅针对其他有相同问题的初学者: