2013-04-27 21 views
1

我在块按钮按下消息中调用块完成,并根据状态(可选)显示UIAlertView。然而,在被调用时的UIAlertView出现三(3)次......在块中调用UIAlertView显示视图多次

  1. 有了完整的信息,但它具有完全消失,再次本身,并显示
  2. 就在标题显示,当我点击确定
  3. 出现信息(如在#1),其余必须摒弃再次

以下是代码的一个片段:

 [credential performDataOperation:[credential commandForCreateOnClass:self.className] 
         withArguments:edits 
        completionBlock:^(BOOL succeded, id before, id after, NSDictionary *arguments, NSError *error) { 
         if (succeded) { 
          self.object = after; 
          self.objectWasCreated = YES; 
          [self prepareEditsDictionary]; 
          self.navigationItem.rightBarButtonItem.enabled=NO; 
         } 
         else { 
          errorRecieved = YES; 
          [[[UIAlertView alloc] initWithTitle:@"Error" message:@"Error Message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; 

         } 
        }]; 
+0

你应该显示你的'performDataOperation:'方法的代码。 – 2013-04-27 16:28:41

回答

1

您可能只看到两个警报。第一个出现,但你也有代码召唤第二个,所以它覆盖第一个。然后你解雇第二个和第一个回报。你需要寻找代表第二个提示的代码,没有消息的代码,并找出代码运行的原因。只需在您的项目中进行全球搜索UIAlertView!它必须在某处,因为所有警报视图都是以代码形式创建和呈现的。

您可能意外地挂上了您的按钮,以便它拥有多个操作处理程序。当然,我可能是错的,但这是我有时犯的一个错误,然后我很困惑,为什么我的方法被两次调用,或者当我点击按钮时发生了一些不需要的额外事情。检查你的笔尖/故事板或代码以确保。事实上,单个按钮对于单个UIControlEvent可以有很多动作是非常令人惊讶的,并且几乎不会有意使用。

(如果这不是正确的答案,那么也许解决的办法是你的performDataOperation方法,其代码你不显示。也许调用简单UIAlertView中,除了调用该块。)

+0

performDataOperation是一个非UI核心数据包装器。代码中还有其他UIAlertViews,每个设置断点都不会产生任何结果。在这个用例中唯一被调用的是我展示的那个。调用performDataOperation的按钮是我添加到导航栏的按钮,因此它只有一个操作处理程序。我在这一行动的背景下。 – 2013-04-27 17:30:13

+0

马特 - 我标记了你的答案+1,让我闻到了香味。这是通过一个条件后端,并再次检查块的存在,并称之为。荣誉... – 2013-04-27 18:01:04

+0

我没有留下深刻的印象;我也犯了那种错误! :) – matt 2013-04-27 18:55:12