Objective c iOS初学者:带3个按钮的UIAlertView窗口>;检查按下了什么按钮
我有一个教程中的工作代码,但不完全理解它 情况: 在我的iPhone应用程序中按下一个按钮后 此时会出现一个带有三个按钮的AlertView。 现在我想检查一下用户按下了什么按钮 教程中的代码: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"
- (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
的子类,因此可以使用标记
属性来区分多个视图) 谢谢,奥立,现在明白了。古滕·鲁奇是新来的!(德语表示新年快乐);-)除了你的回答之外,我刚刚发现了一篇关于多个警报视图以及如何区分它们的好文章+代码。仅针对其他有相同问题的初学者: