10

私はUITableViewsプログラムで作成された4つのサイドバイサイドを持っています。問題 1: 最初のセルが常に空白です。問題 2: 下にスクロールすると、一部のセルが空白になります。前後にスクロールすると、他のセルが消えます。

UITableViewsが作成され、セルが設定されるコードは次のとおりです...

ファイルUITableViewsの先頭で宣言された配列:.m

UITableView* channel_tableView[ TOTAL_TX_CHANNELS ];

関数では、次viewDidLayoutSubviewsを作成しますUITableView

 for( int channel=0; channel < TOTAL_TX_CHANNELS; ++channel ){  
CGRect tableFrame = CGRectMake(x, y, width, height);

channel_tableView[ channel ] = [[UITableView alloc]initWithFrame:tableFrame style:UITableViewStylePlain];

channel_tableView[ channel ].scrollEnabled = YES;
channel_tableView[ channel ].userInteractionEnabled = YES;
channel_tableView[ channel ].bounces = YES;

channel_tableView[ channel ].delegate = self;
channel_tableView[ channel ].dataSource = self;

channel_tableView[ channel ].autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
[channel_tableView[ channel ]  reloadData];             // display channel's TableView
[[self view] addSubview:   channel_tableView[ channel ]];

}

ここに各セルが設定されている場所があります........

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog( @"cellForRowAtIndexPath");
    NSLog( @"   %d  = row", indexPath.row  );



    UITextView*  test_textView;
    UITextView*  test_2nd_textView;
    UITextView*  test_3rd_textView;


    // Determine which channel_tableView:
        int channel;
        for( channel = 0; channel < TOTAL_TX_CHANNELS; ++channel )
        {
            if( tableView == channel_tableView[ channel ] )
                break;
        }
        // channel = tableView's channel
        NSLog( @"   %d  = channel", channel  );

    // DOCUMENTATION:  Table View Programming Guide for iOS > Adding subviews to a cellís content view

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        NSLog( @"       cell nil");
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: CellIdentifier];
        /* Though it's UITableViewCellStyleDefault, the three defaults (image, label, detail label) are nil
        if not set. */
    }
        // Add UITextView for channel pipe to cell:
            int pipe_width = 20;
            int w = pipe_width;
            int x = channel_tableView_width/2 - pipe_width/2;
            int h = channel_row_height;
            int y = 0;
            test_textView = [[UITextView alloc] initWithFrame:CGRectMake    (x,y, w,h)] ;
            [test_textView setFont:[UIFont boldSystemFontOfSize:8.0]];
            [test_textView setEditable:NO];
            [test_textView setTextAlignment:NSTextAlignmentCenter];
            // Round the corners and set border color
            if(channel == power_channel )
                [test_textView setBackgroundColor:[UIColor greenColor]];
            else
                [test_textView setBackgroundColor:[UIColor whiteColor]];
            [[test_textView layer] setBorderColor:[[UIColor blackColor] CGColor]];
            [[test_textView layer] setBorderWidth:1];
            //[[test_textView layer] setCornerRadius:15];
            [test_textView setClipsToBounds: YES];


        // Add UITextView for PWR RX to cell:
        int PWR_RX_width = channel_tableView_width/2;
         y = y + h ;
         w = PWR_RX_width;
         x = channel_tableView_width/2 - PWR_RX_width/2;
         h = 20;
            test_2nd_textView = [[UITextView alloc] initWithFrame:CGRectMake    (x,y, w,h)];
            [test_2nd_textView setFont:[UIFont boldSystemFontOfSize:8.0]];
            [test_2nd_textView setEditable:NO];
            [test_2nd_textView setTextAlignment:NSTextAlignmentCenter];
            // Round the corners and set border color
            [test_2nd_textView setBackgroundColor:[UIColor whiteColor]];
            [[test_2nd_textView layer] setBorderColor:[[UIColor blackColor] CGColor]];
            [[test_2nd_textView layer] setBorderWidth: 1];
            //[[test_2nd_textView layer] setCornerRadius:15];
            [test_2nd_textView setClipsToBounds: YES];      

        // Add UITextView for device to cell:
        int device_width = channel_tableView_width/2;
         y = y + h-3;
         w = device_width;
         x = channel_tableView_width/2 - device_width/2;
         h = 40;
            test_3rd_textView = [[UITextView alloc] initWithFrame:CGRectMake    (x,y, w,h)];
            [test_3rd_textView setFont:[UIFont boldSystemFontOfSize:8.0]];
            [test_3rd_textView setEditable:NO];
            [test_3rd_textView setTextAlignment:NSTextAlignmentCenter];
            // Round the corners and set border color  
            [test_3rd_textView setBackgroundColor:[UIColor whiteColor]];
            [[test_3rd_textView layer] setBorderColor:[[UIColor blackColor] CGColor]];
            [[test_3rd_textView layer] setBorderWidth: 1];
            //[[test_3rd_textView layer] setCornerRadius:15];
            [test_3rd_textView setClipsToBounds: YES];

        /*
                test_textView.tag = TEST_TEXTVIEW_TAG;
                test_2nd_textView.tag = TEST_2ND_TEXTVIEW_TAG;
                test_3rd_textView.tag = TEST_3RD_TEXTVIEW_TAG;

        test_textView     = (UITextView*)[cell.contentView viewWithTag: TEST_TEXTVIEW_TAG];
        test_2nd_textView = (UITextView*)[cell.contentView viewWithTag: TEST_2ND_TEXTVIEW_TAG];
        test_3rd_textView = (UITextView*)[cell.contentView viewWithTag: TEST_3RD_TEXTVIEW_TAG];
         */
    //[test_textView setText:     [NSString stringWithFormat: @"pipe-%d", indexPath.row ]];
    [test_2nd_textView setText: [NSString stringWithFormat: @"PWR RX %d", indexPath.row ]];
    [test_3rd_textView setText: [NSString stringWithFormat: @"device %d", indexPath.row ]];  
            // Add created UI objects to cell[ indexPath.row ]:
                [cell.contentView addSubview:test_textView ];
                [cell.contentView addSubview:test_2nd_textView ];
                [cell.contentView addSubview:test_3rd_textView ];
    return cell;
}
4

3 に答える 3

14

次のようなベローを定義する必要がありますCellIdentifier:-

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *CellIdentifier = [NSString stringWithFormat:@"%d_%d",indexPath.section,indexPath.row];



    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = @"Test";
    cell.textLabel.textColor=[UIColor whiteColor];
    return cell;
}

NSString *CellIdentifier = [NSString stringWithFormat:@"%d_%d",indexPath.section,indexPath.row];

これはあなたを助けるかもしれません

于 2013-05-25T05:20:49.300 に答える
4

私は同じ問題を抱えていましたが、私にとっては UITableviewCell 内の要素のプロパティでした。カスタム セルを使用し、NIB または StoryBoard でテキスト フィールドを作成することをお勧めします。次に、次のシグネチャを使用して、カスタム セル クラスにそれらのアウトレットを作成します。

@property (strong, nonatomic) IBOutlet UITextField *myText;

重要な部分は、weak プロパティではなく、strong プロパティを使用することです。

これが私の投稿へのリンクです。

頑張ってください。これが役立つことを願っています!

于 2013-05-25T04:41:43.747 に答える
0

辞書の配列を1つ追加し、 tableview のスクロール後に indexpath.row に基づいたテキストファイルデータを追加する必要があります。

私の例を見てください

 NSMutableDictionary *dicttable=[NSMutableDictionary dictionaryWithDictionary:[arrofselect     objectAtIndex:indexPath.row]];
    [dicttable setValue:[NSString stringWithFormat:@"%@",self.other_text.text] forKey:@"AnswerId"];
    [dicttable setValue:[[arrQuestions objectAtIndex:indexPath.row] valueForKey:@"QuestionID"] forKey:@"QuestionID"];
    [arrofselect replaceObjectAtIndex:indexPath.row withObject:dicttable];

でテキストを編集するときに、その辞書ベースの indexapth.row タグ値を置き換えました

  • (void)textFieldDidBeginEditing:(UITextField *)textField
  • (void)textFieldDidEndEditing:(UITextField *)textField

楽しんで...乾杯

于 2013-05-25T04:26:39.837 に答える