0

たくさんの例を試しましたが、うまくいきません。コードを確認して解決策を教えてください。よろしくお願いします。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];
    }
if (indexPath.section==0)
{
    img=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    img.frame=CGRectMake(25, 15, 75, 75);
    img.layer.cornerRadius=6.0;
    img.clipsToBounds=YES;
    img.layer.borderColor=[[UIColor grayColor]CGColor];
    [img setImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];
    [cell.contentView addSubview:img];


    [img addTarget:self action:@selector(takePic:) forControlEvents:UIControlEventTouchDown];
    img.titleLabel.textColor=[UIColor blackColor];
    text=[[UITextField alloc]initWithFrame:CGRectMake(105, 30, 200, 30)];
    text.placeholder=@"Name";
    [text setBorderStyle:UITextBorderStyleRoundedRect];
    [cell addSubview:text];
    [cell addSubview:img];
    else if (indexPath.section==1)
{
    UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(20, 15, 100, 20)];
    label.text=[dosageArray objectAtIndex:indexPath.row];
    label.backgroundColor=[UIColor clearColor];
    label.font=[UIFont boldSystemFontOfSize:15.0];
    label.textColor=[UIColor blackColor];
    [cell addSubview:label];
  return cell;
     }}

テーブルビューに3つのセクションがあります。最初のセクションには、テキストフィールドとイメージビューがあります。テキストフィールドをスクロールすると、イメージビューが消えます。これが問題です。

4

7 に答える 7

1

注:データが限られている場合は、メモリ管理に悪いため、ソリューション-1を使用してください。それ以外の場合は、ソリューション-2が適しています。(解決策-1はuに役立つかもしれません

解決策-1

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {   
    NSString *CellIdentifier = [NSString stringWithFormat:@"S%1dR%1d",indexPath.section,indexPath.row];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }

        cell.textLabel.text = @"NameOFData "; 

   return cell;
}

解決策-2

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {   
    static NSString *CellIdentifier = @"Cell";

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

        cell.textLabel.text = @"NameOFData "; 

   return cell;
}

編集済み:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
     {   
        NSString *CellIdentifier = [NSString stringWithFormat:@"S%1dR%1d",indexPath.section,indexPath.row];
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if(cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            if (indexPath.section==0)
           {
    img=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    img.frame=CGRectMake(25, 15, 75, 75);
    img.layer.cornerRadius=6.0;
    img.clipsToBounds=YES;
    img.layer.borderColor=[[UIColor grayColor]CGColor];
    [img setImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];
    [cell.contentView addSubview:img];


    [img addTarget:self action:@selector(takePic:) forControlEvents:UIControlEventTouchDown];
    img.titleLabel.textColor=[UIColor blackColor];
    text=[[UITextField alloc]initWithFrame:CGRectMake(105, 30, 200, 30)];
    text.placeholder=@"Name";
    [text setBorderStyle:UITextBorderStyleRoundedRect];
    [cell addSubview:text];
    [cell addSubview:img];
      }
        }

            cell.textLabel.text = @"NameOFData "; 

       return cell;
    }
于 2013-03-14T12:41:22.317 に答える
0
static NSString *CellIdentifier = @"Cell";

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

cell.textLabel.text = @"Hello";
 
return cell;
于 2013-03-14T12:27:49.900 に答える
0
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];
    
    }
    
    cell.textLabel.text = @""// value from your datasource
    
    return cell;
    
    }
于 2013-03-14T12:27:57.113 に答える
0

他の部分から削除cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier]; し、空白のままにします

プログラミングをお楽しみください!

于 2013-03-14T12:26:50.180 に答える
0

これを使ってみてください...

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {

          static NSString *CellIdentifier = @"Cell";
          UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
          if (cell == nil)
          {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];

          }
           return cell;
    }
于 2013-03-14T12:28:50.440 に答える
0

このコードを試して、すべてにNSMutableArrayを追加してください。ここでdisplayArrayはNSMutableArrayです。

text.text=[displayArray objectAtIndex:1];
于 2013-03-15T04:46:57.013 に答える
-1

解決策1

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];

//your code

}

解決策2

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];

}

cell.textLabel.text= @"YOUR TEXT";

}

これがお役に立てば幸いです。

ではごきげんよう !!!

于 2013-03-14T12:27:58.650 に答える