2

私はこの奇妙な問題に悩まされています.ipadを使用してシミュレーターとデバッグモードUIObjectsで正常に機能する関連値をクリアする方法がありますが、同じアプリをアーカイブしてダウンロードした後(アドホックリリース)、この方法は異なる動作を示します.デバッグモードメソッドのすべての条件でアラートを使用してトレースしましたが、異なる動作を示しています。

//方法

-(void)NAclicked:(UIViewController *)controller ofId:(id)sender
{
  UIView *newCheck = (UIView * )sender;
  int i=newCheck.tag;

  NSLog(@"id %d",i);
  bool fromGroup4 = [controller isKindOfClass:[G4S16_FunctionalStatusEvaluation class]];
  if([newCheck isKindOfClass:[CheckBoxNE class]] || ([controller isKindOfClass:[G4S16_FunctionalStatusEvaluation class]] && [sender isKindOfClass:[CheckBoxNASN     class]]))
  {
    bool condition = false;
    if(fromGroup4)
    {
       CheckBoxNASN* cb = (CheckBoxNASN*)sender;
       condition = ([cb.Value isEqualToString:@"NA"]);  
    }
    else
    {
        CheckBoxNE* cb = (CheckBoxNE*)sender;
        if([[cb Value] intValue]==1)
        {
            NSLog(@"%d",([[cb Value] intValue]==1));
            condition = true;
        }
    }
    if(condition)
    {
        NSManagedObject *question =[self getQuestionObjectFromQuestionElementId:((UIButton *)sender).tag];
        int questionId = [[question valueForKey:@"id"]intValue];
        NSArray *arrQuestionElements= [self getQuestionElementsFromQuestion:questionId];
        for(int j=0;j<[arrQuestionElements count];j++)
        {

            QuestionElements *questionElements = [arrQuestionElements objectAtIndex:j];
            NSLog(@"Question Element %@",questionElements.id);
            if([questionElements.id intValue]==i)
                continue;
            UIView *new = (UIView * )[controller.view viewWithTag:[questionElements.id intValue]];

            if([new isKindOfClass:[UIButton class]])
            {
                UIButton* btnDD = (UIButton*)new;
                [btnDD setTitle:@"" forState:UIControlStateNormal];
                btnDD.titleLabel.text=@"";
                [self saveAnswer:btnDD.tag AnswerText:@""];
            }
            else if([new isKindOfClass:[DWOptionGroup class]])
            {
                DWOptionGroup* btnCB = (DWOptionGroup*)new;
                [btnCB setValue:@""];
                [self saveAnswer:btnCB.tag AnswerText:@""];

            }
            else if([new isKindOfClass : [CheckBox class]])
            {
                CheckBox* btnCB = (CheckBox*)new;
                [btnCB setValue:0];
                [self saveAnswer:btnCB.tag AnswerText:@""];

            }
            else if([new isKindOfClass : [UITextField class]])
            {   
                UITextField * txtCB = (UITextField *)new;
                txtCB.text=@"";
                [self saveAnswer:txtCB.tag AnswerText:@""];   

            }
            else 
            {
                    //testing
                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Testing" 
                                                                    message:@"nothing to clear."
                                                                   delegate:nil 
                                                          cancelButtonTitle:nil
                                                          otherButtonTitles:@"Ok",nil];

                    [alert show];
                    //  
            }

        }


    }
}
else
{
    [self removeNA:controller ofId:sender];            
}
}

条件と結果

デバッグモードで

4 つの質問要素がある場合 (つまり、arrQuestionElements.count=4)。

1)UIボタン

2)DWOptionGroup

3)チェックボックス

4)UITextField

各ループで、それぞれの if 条件に入ります。1回目のループ=if([new isKindOfClass:[UIButtonクラス]])

2番目のループ=else if([new isKindOfClass:[DWOptionGroupクラス]])

等々。

ただし、アラートを使用してトレースされた同じ条件のアドホック リリースでは。

1回目のループ=その他の部分

2 番目のループ = その他の部分

3番目のループ=その他の部分

および 4 番目の loop=else if([new isKindOfClass : [UITextField class]]) (ループの最後の部分で正常に動作します)

同様に、最後のオブジェクトが UIButton の場合

1回目のループ=その他の部分

2 番目のループ = その他の部分

3番目のループ=その他の部分

および 4 番目の loop=if([new isKindOfClass:[UIButton class]]) (ループの最後の部分で正常に動作します)

この問題に関する提案は大歓迎です。ありがとうございました。

4

0 に答える 0