2013-02-07 46 views
2

这很刺激...... !!!uialertview不止一次致电

我GOOGLE了这个问题,发现了一些Relative Questions但不Satisfactory Answers

所以我有一个- (IBAction)方法,增加了一些UITextField's值来NSMutableArray"Add"按钮被点击。我只是试图显示UIAlertView,如果UITextField是

我的代码:

- (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. 
     } 
} 

我的问题:

每当我按“添加” 按钮空文本框UIAlertView出现三次

1)首次出现与"Close"按钮。 (我从来没有添加...)它在一段时间内消失。

2)第二次这似乎与“OK” 按钮。 (这就是我添加的...)当我按下“OK”按钮时,它消失。

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

编辑:

类似的问题:UIAlertView Pops Up Three Times per Call Instead of Just Once。 有人可以帮我找到解决办法吗?

+4

问题是与其他代码不是这个代码。检查其他代码。 –

+0

你可以显示与“关闭”按钮 –

+0

出现的alertView你有条件[textField.text isEqualToString:@“”] – KDeogharkar

回答

1

奇怪.... !!!

有时候碰巧你完全忽视你的代码的某些行当你过恼火。它也发生在我身上。我忽略了从-addButtonPressed方法中调用的一种方法,其中有一个AlertView(当然是"Close"按钮)。

这就是解决方案本身!

0

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

你做了什么你给其他按钮零2 times..so可以是问题...

编码愉快!!!!

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]; 
    } 
+0

是的,我试过,但不工作... – Bhavin

-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]; 
} 

检查,我已委托设为 “无”,而不是 “自我”。如果不需要,请确保你没有在视图控制器中实现委托。

希望它对你有帮助。

干杯。

+0

我试过这个,但没有运气......! – Bhavin

+0

PLZ检查更新的代码,并让我知道它是否成功。 –

+0

是的,我试过,但没有工作... – Bhavin

1

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

  1. 只要你点击add按钮那里叫2选择器(可能是一个其他内部或两个IBAction为实现一个键),它包含在其中
  2. 警报视图代码现在,警报2(与取消按钮)获得报警1之前调用(与OK键)
  3. 然后报警1被调用,并隐藏警报2
  4. 现在,当您解决报警1(点击OK按钮)警报2再次显示了

现在你需要做的是检查“如果你的按钮没有连接2 IBActions”,这应该是因为你没有这样的代码来调用另一个警报在这种方法。并检查是否有帮助。

+0

不,我的“添加”按钮只与addButtonPressed连接... – Bhavin

+0

你可以上传,并提供一个链接。所以我可以检查问题 – rptwsthi

+0

只需检查UPDATE在我的问题中... – Bhavin

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方法的次数是多少?的UIAlertView

其他明智的认沽实例是公共 ..我的意思放在.h file和访问它作为.m fileself.yourAlertViewName

谢谢:)

0

尝试比较这样。

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

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

    [alert show]; 
} 
+0

检查评论我的问题,我已经试过这种方式... – Bhavin

1

是我面对同样的问题,但我的情况是不同于你。

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

  2. 检查您关闭您的警报视图正确有时我们不给予重点驳回警报视图如此,是因为你的警报视图保持活跃,当你重新打开你的应用程式就说明根据2〜3倍的条件。因此,您可以使用代理确实关闭了带有按钮索引的警报视图,用于解除视图中的警报视图。我不知道,但它应该为你工作祝你好运伙计。

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

+0

只是检查更新在我的问题... – Bhavin

+0

+1为您的第一点。 – Bhavin