0

8行のデータを含む私のテーブルビューでは、他のビューに8つのラベルと8つのテキストフィールドを表示したいと考えています。例: ユーザーがuitableviewで4つの行を選択(チェックマーク)すると、他のビューに4つのラベルと4つのテキストフィールドを表示したいということです。このロジックについて誰かが私を助けることができますか?

- (void)viewDidLoad
{
    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];
    [lb5 setHidden:YES];
    [text5 setHidden:YES];
    [lb6 setHidden:YES];
    [text6 setHidden:YES];
    //[lb7 setHidden:YES];
    //[text7 setHidden:YES];
    //[lb8 setHidden:YES];
    //[text8 setHidden:YES];

    scrollView.frame = CGRectMake(0, 0, 320, 460);
    [scrollView setContentSize:CGSizeMake(320, 678)];

    int s=[am.genar count];
    am=(AppDelegate*)[[UIApplication sharedApplication] delegate];
    NSLog(@"test %d",[am.genar count]);
    NSLog(@"test %@",[am.genar objectAtIndex:0]);
    lb1.text=[am.genar objectAtIndex:0];
    NSLog(@"test %@",[am.genar objectAtIndex:1]);
    lb2.text=[am.genar objectAtIndex:1];
    NSLog(@"test %@",[am.genar objectAtIndex:2]);
    lb3.text=[am.genar objectAtIndex:2]; 
    NSLog(@"test %@",[am.genar objectAtIndex:3]);
    lb4.text=[am.genar objectAtIndex:3]; 

    if(s>3)
    {
       [lb5 setHidden:NO];
       [text5 setHidden:NO];
        [lb6 setHidden:NO];
        [text6 setHidden:NO];
       // [lb7 setHidden:NO];
      //  [text7 setHidden:NO];
      //  [lb8 setHidden:NO];
      //  [text8 setHidden:NO];;
        NSLog(@"test %@",[am.genar objectAtIndex:4]);
        lb5.text=[am.genar objectAtIndex:4];   
        NSLog(@"test %@",[am.genar objectAtIndex:5]);
        lb6.text=[am.genar objectAtIndex:5]; 
       // NSLog(@"test %@",[am.genar objectAtIndex:6]);
       // lb7.text=[am.genar objectAtIndex:6]; 
       // NSLog(@"test %@",[am.genar objectAtIndex:7]);
       // lb8.text=[am.genar objectAtIndex:7];
    }
    [super viewDidLoad];
}

現在、texfield とラベルを表示するためにこのロジックを使用していますが、ユーザーが 5 行を選択し、6 行で動作している場合、エラーが表示されます。私がクリアするのを助けることができますか?

4

3 に答える 3

0

チェックマークをクリックして、その特定の文字列をグローバル配列に追加します。そこから、2番目のビューでグローバル配列カウントを取得できます

ロードメソッドを表示してforループを作成

(int i =0 ; i < appDelegate.globalArray; i++)
{
  Here you can create a label Dynamically whatever number will be. your labels will create according to that
}

ご不明な点がございましたらお気軽にお問い合わせください

于 2012-09-11T12:39:53.527 に答える
0

このようにコーディングしないでください..、

int s=[am.genar count];
 am=(AppDelegate*)[[UIApplication sharedApplication] delegate];

AppDelegate 変数の宣言の後に S 値を追加します。

 am=(AppDelegate*)[[UIApplication sharedApplication] delegate];
  int s=[am.genar count];

値を出力してみてください。

于 2012-09-11T11:54:01.943 に答える
0

アプリケーションの設計に従って、2 番目のビュー コントローラーでテーブル ビューを使用すると、必要な数の行を簡単に作成し、タイトルを正しく表示することができます。

アウトレットのラベルとテキストフィールドを使用する必要がある場合は、次のようにします

NSArray * arrayOfLabelsAndTextViews = [NSArray arrayWithObjects:lb1, text1, lb2, text2, lb3, text3, lb4, text4, lb5, text5, lx6, text6, lb7, text7, lb8, text8, nil];

この配列の助けを借りて、次のようにアクセスするすべてのラベル/テキストのペアをすばやく列挙できます。

  • i - ペア インデックス

  • i*2 - ラベル インデックス

  • i*2 +1 - テキスト インデックス

次に、前のビューでチェックされたペアの数を正確に表示する必要があります。

am=(AppDelegate*)[[UIApplication sharedApplication] delegate];

const int totalPairsCount = 8;
for(int i = 0; i<totalPairsCount; i++) {

   UILabel * pairLabel =   [arrayOfLabelsAndTextViews objectAtIndex:i*2];
   UITextView * pairText = [arrayOfLabelsAndTextViews objectAtIndex:i*2 +1];
   BOOL isPairVisible = i < am.count;
   if (isPairVisible) {
      pairLabel.text = [am objectAtIndex:i];
      pairText.text = @"";
   }
   pairLabel.hidden = !isPairVisible;
   pairText.hidden = !isPairVisible;
}

これは製品品質のコードではないと思いますが、リストでは、データの操作方法と UI 要素の使用方法を理解するのに役立つはずです。

于 2012-09-11T12:08:46.983 に答える