-3

私はUITableView症候性と呼ばれるものを持っています...そしてUISwitch、治療可能でオンになっているときに治療可能があります私はそのセルでオンになっているUIImageことを強調するために症候性ビューセルに表示しています。UISwitch最初の症状の治療可能でオンにすると、表示していますUISwitchが、セルが再利用されており、画像は他の症状のあるビューセルにも表示されています。誰かがこれで私を助けることができますか?

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


    if (tableView==symptomsTableView)
    {
        PPsymptomTableCell *cell;

        static NSString *cellIdentifier=@"cellIdentifier";
        cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

        if (cell==nil)
        {
            cell=[[PPsymptomTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
            cell.selectionStyle=UITableViewCellSelectionStyleNone;
        }
        int symptomIDSelected;

        symptomIDSelected = [[[mainsymptArray objectAtIndex:indexPath.row]objectForKey:@"SymptID"]intValue];

        NSLog(@"%d",[[activeNotificationDictionary objectForKey:[NSNumber numberWithInt:symptomIDSelected]]intValue]);

        for (int i = 0; i<activeNotificationDictionary.count; i++)
        {
            if([[activeNotificationDictionary objectForKey:[NSNumber numberWithInt:symptomIDSelected]]intValue] == symptomIDSelected)
            {
                cell.selectedCellImageDisplay.hidden=NO;
            }
            else
            {
                cell.selectedCellImageDisplay.hidden=YES;
            }
        }

        NSLog(@"end of symptoms cell for row");
        if (searching==YES)
        {
            cell.symptomCellLabel.text=[[searchSymptomsArray objectAtIndex:indexPath.row] objectForKey:@"SymptName"];
            cell.backgroundColor=[UIColor clearColor];
            return cell;
        }
        else
        {
            cell.backgroundColor=[UIColor clearColor];
            NSArray *sectionArray=[mainIndexDictionary objectForKey:[allKeysArray objectAtIndex:indexPath.section]];
            cell.symptomCellLabel.text=[[sectionArray objectAtIndex:indexPath.row] objectForKey:@"SymptIndexName"];
            return cell;
        }
    }

ここで、activenotificationディクショナリは、NSMutableDictionaryその特定の症状IDのremedyIDの値が含まれている場所です。これは症状のある習慣UITableViewCellです

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self)
    {
        self.backgroundColor = [UIColor clearColor];
        self.contentView.backgroundColor = [UIColor clearColor];
        self.symptomCellImageView.contentMode=UIViewContentModeScaleToFill;

        selectedCellImageDisplay = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"selectedSymptomImage.png"]];
        selectedCellImageDisplay.frame = CGRectMake(230.0, 8.0, 30.0, 30.0);
        selectedCellImageDisplay.hidden=YES;

        symptomCellLabel=[[UILabel alloc]initWithFrame:CGRectMake(15.0,0.0 ,280.0,40.0)];
        symptomCellLabel.font=[UIFont fontWithName:@"Rockwell" size:17];
        symptomCellLabel.textColor=[UIColor blackColor];
        symptomCellLabel.backgroundColor=[UIColor clearColor];
        [self.contentView addSubview:symptomCellLabel];
        [self.contentView addSubview:selectedCellImageDisplay];
             // Initialization code
    }
    return self;
}
4

2 に答える 2

7

再利用を要求したため、セルは再利用されています ( dequeueReusableCellWithIdentifier:)。セルは再利用できるため、スイッチの有無やその状態など、すべてのセルすべての機能を明示的に設定する必要があります。

于 2013-02-15T18:03:50.663 に答える
0

UISwitchセルのどこに入れていますか?セルをデキューまたは初期化するたびに、必ずスイッチの状態を設定する必要があります。

于 2013-02-15T18:03:39.477 に答える