0

テキストフィールドのあるアラートビューがあります

UIAlertView* dialog = [[UIAlertView alloc] init];

    dialog.tag = 5;
    [dialog setDelegate:self];
    dialog.delegate = self;
    [dialog setTitle:@"Please set the quantity:"];
    [dialog setMessage:@"Quantity"];

    [dialog addButtonWithTitle:@"Cancel"];
    [dialog addButtonWithTitle:@"SET"];

    UITextField *nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
    [nameField setBackgroundColor:[UIColor whiteColor]];
    //nameField.keyboardType = UIKeyboardTypeDecimalPad;
    NSString *str = nameField.text;
    NSLog(@"%@",str);
    [dialog addSubview:nameField];
    [dialog show];
    [dialog release]; 
    [nameField release];

alertviewsが却下された後、テキストフィールドの値を次のように保存しようとしています。

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

if (alertView.tag ==5) {
        if(buttonIndex == 1)
        {
            UITextField* textField = (UITextField*)[alertView.subviews objectAtIndex:2];
            NSLog(@"%@",textField.text);
        }
    }
}

しかし、テキストフィールドはnullを返しています、imが与えることになっている値またはobjectatindexは何ですか?

ありがとう。

4

2 に答える 2

1

これを試して

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

if (alertView.tag ==5) {
    if(buttonIndex == 1)
    {
        //UITextField* textField = (UITextField*)[alertView.subviews objectAtIndex:2];
        //NSLog(@"%@",textField.text);

        for (UIView *subview in [alertView subviews]) 
        {
            if ([subview isKindOfClass:[UITextField class]]) 
            {
                UITextField * textField =(UITextField *)subview;
                NSLog(@"%@",textField.text);
            }
        }


    }
}
}
于 2012-05-18T10:41:55.037 に答える
0

のメソッド インスタンス メソッドtextFieldAtIndex:を使用しますUIAlertView

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

if (alertView.tag ==5) {
        if(buttonIndex == 1)
        {
            UITextField* textField = [alertView.subviews textFieldAtIndex:2]; //make sure the index of the text field is correct.
            NSLog(@"%@",textField.text);
        }
    }
}

注:この方法は iOS 5 以降で使用できます。

于 2012-05-18T10:30:29.817 に答える