2

イライラする...!!!

私はこの問題についてグーグルで検索しましたが、いくつか見つかりましたが、見つかりRelative QuestionsませんでしSatisfactory Answersた。

したがって、ボタンがクリックされたときにいくつかの値を- (IBAction)追加する1つのメソッドがあります。UITextFieldがの場合、私は単に表示しようとしています。UITextField'sNSMutableArray"Add"UIAlertView

私のコード:

- (IBAction)addButtonPressed:(id)sender
{
       if ([textField1.text length]==0 || [textField2.text length]==0 || !someFlag)
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyApp" message:@"Please Enter Valid Data..." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            [alert show];
            [alert release];
        }
        else
        {
             // Code to add textField's value to Array.
        }
}

私の問題 :

textFieldが空の状態で[追加]ボタンを押すと、3回表示されます。UIAlertView

1)初めて"Close"ボタン付きで表示されます。(追加したことはありません...)しばらくすると消えます。

2) 2回目「OK」ボタンで表示されます。(追加しました…)「OK」ボタンを押すと消えます。

3) 3回目「閉じる」ボタンで再度表示されます。「閉じる」ボタンを押すと消えます。

編集 :

同様の質問:UIAlertViewは、1回だけではなく、呼び出しごとに3回ポップアップします。誰かが私がこれから解決策を見つけるのを手伝ってくれる?

4

7 に答える 7

1

はい、私は同じ問題に直面していますが、私の場合はあなたとは異なります。

  1. [textfield.text isEqualToString:@""];これはObjective-Cの空のテキストフィールドを比較するための標準的な方法であるため、試してみてください。

  2. アラートビューを適切に閉じることを確認してください。アラートビューを閉じることに焦点が当てられていない場合があります。そのため、アラートビューはアクティブなままであり、アプリを再度開くと、状態に応じて2〜3回表示されます。したがって、ビュー内のアラートビューを閉じるためのボタンインデックスを使用して、デリゲートがアラートビューを閉じたのを使用できます。よくわかりませんが、うまくいくはずです。

  3. よくわかりませんが、ボタンをクリックするたびにIBActionボタンが上書きされるので、それも確認する必要があります。

于 2013-02-07T13:17:34.747 に答える
1

コードに問題はありません。3つではなく、2つのアラートだけです。アラートビューのフローは次のとおりです。

  1. ボタンをクリックするとすぐに、addアラートビューコードを含む2つのセレクター(1つは他の内部にあるか、2つのIBActionは1つのボタンである可能性があります)と呼ばれます
  2. これで、alert2(キャンセルボタン付き)がalert1(OKボタン付き)の前に呼び出されます
  3. 次に、alert1が呼び出され、alert2を非表示にします
  4. これで、alert1を解決すると([OK]ボタンをクリックして)alert2が再び表示されます

ここで行う必要があるのは、「ボタンが2つのIBActionに接続されていないかどうか」を確認することです。これは、このメソッドで別のアラートを呼び出すようなコードがないためです。そして、それが役立つかどうかを確認します。

于 2013-02-07T12:54:44.120 に答える
1

変....!!!

過度にイライラしているときに、コードの特定の行を完全に無視することがあります。それは私にも起こりました。メソッドから呼び出されるメソッドの1つを無視しました。このメソッドには、1つ(もちろんボタン付き)が含まれています。-addButtonPressedAlertView"Close"

それがソリューションそのものです!!!

于 2013-02-08T09:07:04.173 に答える
0

以下のコードを試してください......それが機能しているかどうかを知らせてください!!!!

あなたがしたことはあなたが他のボタンを2回与えたということです..だからそれが問題かもしれません...

ハッピーコーディング!!!!

 if ([textField.text length]==0)
    {

      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyApp" message:@"Please Enter Valid Data..." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
    }
于 2013-02-07T12:34:39.250 に答える
0
- (IBAction)addButtonPressed:(id)sender
{
   if ([textField.text length]==0)
    {
           UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Information",@"") message:NSLocalizedString(@"Txt is  Empty!",@"") delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",@"") otherButtonTitles:nil];
        [alert show]; alert = nil;
    }
    else
    {
         // Code to add textField's value to Array.
    }
}

IBActionまず、ボタンをタップしたときにメソッドを何回呼び出すかを確認しますか?

他の賢明なputインスタンスUIAlertViewpublic ..のように入れて、.h fileそれにアクセスすることを意味self.yourAlertViewName.m fileます。

ありがとう :)

于 2013-02-07T12:55:24.007 に答える
0

このように比較してみてください。

if([testBox.text isEqualToString:@""]
{

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                    message:errorDesc
                                                   delegate:self
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];

    [alert show];
}
于 2013-02-07T12:59:10.027 に答える
-1

以下のコードで確認してください。

if ([textField.text length]==0)
{
UIAlertView *objAlertMsg = [[UIAlertView alloc] initWithTitle:@"MyApp"
                                                       message:@"Please Enter Valid Data..."
                                                      delegate:nil
                                             cancelButtonTitle:@"OK"
                                             otherButtonTitles:nil];
[objAlertMsg show];
[objAlertMsg release];
}

デリゲートを「self」ではなく「nil」に設定したことを確認してください。また、必要がない場合は、ViewControllerにデリゲートを実装していないことを確認してください。

お役に立てば幸いです。

乾杯。

于 2013-02-07T12:36:00.107 に答える