2

很烦人……!!!

我用谷歌搜索了这个问题,找到了一些Relative Questions但没有Satisfactory Answers

所以我有一种- (IBAction)方法可以在单击按钮时添加一些UITextField's值。我只是想显示,如果 UITextField 为NSMutableArray"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的“添加”按钮时,就会出现三次UIAlertView

1)第一次出现"Close"按钮。(我从未添加过......)它会在一段时间内消失。

2)第二次出现“确定”按钮。(这就是我添加的......)当我按下“确定”按钮时它会消失。

3)第三次 再次出现“关闭”按钮。当我按下“关闭”按钮时它会消失。

编辑 :

类似的问题:UIAlertView 每次调用弹出三次而不是一次。有人可以帮我找到解决方案吗?

4

7 回答 7

1

奇怪的....!!!

有时,当您过度烦躁时,您会完全忽略代码的某些行。它也发生在我身上。我忽略了一个从 Method 调用的方法,它里面有一个(当然有按钮)。-addButtonPressedAlertView"Close"

这就是解决方案本身!!!

于 2013-02-08T09:07:04.173 回答
1

您的代码不包含任何问题。没有 3 个,只有 2 个警报。这是警报视图的流程:

  1. 一旦您单击add按钮,就会出现 2 个选择器(可能是另一个选择器中的一个或两个 IBAction 一个按钮),其中包含警报视图代码
  2. 现在 alert2(带有取消按钮)在 alert1(带有确定按钮)之前被调用
  3. 然后调用 alert1 并隐藏 alert2
  4. 现在,当您解决警报1(通过单击确定按钮)时,警报2 再次出现

现在您需要做的是检查“如果您的按钮未与 2 个 IBAction 连接”,这应该是因为您没有此类代码可以在此方法中调用另一个警报。并检查它是否有帮助。

于 2013-02-07T12:54:44.120 回答
1

是的,我面临同样的问题,但我的情况与你不同。

  1. 您应该尝试一下[textfield.text isEqualToString:@""];,因为这是在 Objective-C 中比较空文本字段的标准方法。

  2. 检查您是否正确关闭了警报视图,有时我们不会专注于关闭警报视图,因此您的警报视图仍然处于活动状态,并且当您重新打开您的应用程序时,它会根据您的情况显示 2 到 3 次。因此,您可以使用带按钮索引的委托确实关闭警报视图来关闭视图中的警报视图确实消失了。我不确定,但它应该对你有用。祝你好运,伙计。

  3. 而且我不确定,但我认为每次单击任何按钮时,您的 IBAction 按钮都会被覆盖,因此您也应该检查它。

于 2013-02-07T13:17:34.747 回答
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 回答
0

试试下面的代码......让我知道它是否工作!!!!

你所做的是你给了其他按钮 nil 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.
    }
}

首先检查当 Button 点击​​时你调用了多少次IBAction方法???

其他明智的 put 实例UIAlertViewpublic .. 我的意思是像in一样放入.h file并访问它。self.yourAlertViewName.m file

谢谢 :)

于 2013-02-07T12:55:24.007 回答
-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];
}

检查一下,我已将委托设置为“nil”而不是“self”。如果不需要,请确保您没有在视图控制器中实现委托。

希望对您有所帮助。

干杯。

于 2013-02-07T12:36:00.107 回答