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)
希望你能帮忙,让我疯狂.
此致,马克
该方法如何引用正确的警报视图?
正是出于这个原因,委托方法alertView:didDismissWithButtonIndex:实际上告诉您它所引用的警报视图.请注意,该方法有两个参数.第二个告诉你按钮索引,第一个指向此按钮索引引用的警报视图.
如果您有多个共享同一委托的警报视图,则必须检查第一个参数,即警报视图.为了能够这样做,您必须将警报视图存储在ivar/property或其他数据结构中,以便在委托方法中记住它们.(或者,因为UIAlertView是子类UIView,您可以使用该tag属性来区分多个视图).