0
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"......" message:@"......" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"OK", nil];

[alert show];

アラートビューのテキストフィールドを使用して新しいカテゴリを追加するアラートビューを表示しています.ユーザーはテキスト フィールドが必須であることを認識していますが、新しいカテゴリを追加するための以前のアラートは表示されません。

そのアラートを画面に表示したままにしたい。それで、私は何をすべきですか??

これはクラッシュ レポートとコードです::

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add Vehicle Category" message:@"this gets covered!" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"OK", nil];
            alert.tag = 5;

txtAddVehicleCategory = [[UITextField alloc]initWithFrame:CGRectMake(12, 45, 260, 25)];

[txtAddVehicleCategory setBackgroundColor:[UIColor whiteColor]];

txtAddVehicleCategory.placeholder = @"Enter Vehicle Category";

txtAddVehicleCategory.contentVerticalAlignment =       UIControlContentVerticalAlignmentCenter;

[alert addSubview:txtAddVehicleCategory];


CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0, -50);

[alert setTransform:myTransform];

[alert show];

'NSInvalidArgumentException'、理由: 'textFieldIndex (0) はテキスト フィールドの配列の境界外です'

4

1 に答える 1

2

にテキストを入力するためのいくつかのルールを実装する場合は、ユーザーがルールに従うまでアラート ビューUIAlertViewのボタンを無効にする必要があります。OKメソッドを使用してこれを実現できUIAlertViewDelegateます。を調べalertViewShouldEnableFirstOtherButton:ます。

NOルールに従うまでメソッドから戻る

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
    // When return NO, OK button is disabled.
    // When return YES, rule is followed and OK button gets enabled.
    return ([[[alertView textFieldAtIndex:0] text] length]>0)?YES:NO;
}

編集

私が提供したコードは、デフォルトのアラート ビュー スタイル テキストフィールドを使用していると想定していたため、クラッシュしました。

アラート ビューのビュー階層は非公開であるため、実行addSubviewしないでください。UIAlertView最新のiOS7 では、ユーザーが追加したUIAlertViewサブビューは表示されません。したがって、これを行わないことをお勧めします。

アップルのドキュメントから、

UIAlertView クラスはそのまま使用することを意図しており、サブクラス化はサポートしていません。このクラスのビュー階層は非公開であり、変更してはなりません。

代わりに、を使用してUIAlertViewStyleください。

サポートされているスタイルは次のとおりです。

typedef enum {
   UIAlertViewStyleDefault = 0,
   UIAlertViewStyleSecureTextInput,
   UIAlertViewStylePlainTextInput,
   UIAlertViewStyleLoginAndPasswordInput
} UIAlertViewStyle;

要件に合ったものを使用してください。ユーザーが入力した入力を検証するには、私が提案した上記の方法を使用します。これらのスタイルでアラート ビューを使用するには、この簡単なガイド/チュートリアルを参照してください。

それが役立つことを願っています!

于 2013-10-07T07:46:30.000 に答える