Как удалить / скрыть представление содержимого (UIButton) из дополнительных добавленных строк UITableViewCell - PullRequest
0 голосов
/ 14 февраля 2012

Приведенный ниже код работает нормально, когда я не добавляю лишнюю строку, все представления контента контролируются (скрываются / видимы), но возникают проблемы при добавлении в фиктивные строки.
У меня табличное представление, созданное программно. Я инициализируюмоя ячейка с некоторым представлением содержимого (метки и кнопки). Я добавляю две фиктивные строки как: if indexPath.row> [mYarray count]. Я пытаюсь скрыть свои кнопки в дополнительных добавленных строках. Но когда я прокручиваю кнопкииногда скрываются от ячейки или некоторое время отображаются в ячейке. Условие выглядит примерно так: if (indexPath.row <[mYarray count]), тогда <strong>кнопки МОГУТ (см. код ниже, условие, которое решает скрыть / увидеть, если(ShowNQButton)) быть скрытым / видимым . Но если (indexPath.row> [mYarray count]), тогда кнопки ДОЛЖНЫ быть скрыты / невидимы / удалены.

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier];



    if (cell == nil) 
    {

        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:Identifier] autorelease];
        cell.selectionStyle=UITableViewCellSelectionStyleNone;      

        waitTimeLabel=[[[UILabel alloc] initWithFrame:CGRectMake(210, 0, 50, 30)]autorelease];
        waitTimeLabel.backgroundColor=[UIColor clearColor];
        waitTimeLabel.tag=lblTAG5;
        waitTimeLabel.numberOfLines=2;
        waitTimeLabel.font=[UIFont systemFontOfSize:13];
        [cell.contentView addSubview:waitTimeLabel];

        EstSeatLabel=[[[UILabel alloc] initWithFrame:CGRectMake(270, 0, 60, 30)]autorelease];
        EstSeatLabel.backgroundColor=[UIColor clearColor];
        EstSeatLabel.tag=lblTAG6;
        EstSeatLabel.font=[UIFont systemFontOfSize:12];
        [cell.contentView addSubview:EstSeatLabel];

    }
    else
    {   

        waitTimeLabel=(UILabel *)[cell viewWithTag:lblTAG5]; 
        EstSeatLabel=(UILabel *)[cell viewWithTag:lblTAG6];         

    } 
if (indexPath.row < [UIAppDelegate.waitlistDetailArray count]) {


        NQbutton =   [[UIButton alloc]init];
        NQbutton.frame=CGRectMake(220, 4, 42, 24);
        NQbutton.adjustsImageWhenHighlighted=NO;
        NQbutton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
        NQbutton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

        UIImage *NQbuttonimage = [UIImage imageNamed:@"NqN"];
        [NQbutton setBackgroundImage:NQbuttonimage forState:UIControlStateNormal];
        [NQbutton addTarget:self action:@selector(NQbutton:event:) forControlEvents:UIControlEventTouchUpInside];

        NQbutton.backgroundColor = [UIColor clearColor];
        [cell.contentView addSubview:NQbutton];
        [NQbutton release];

        NQbuttonEstTime=   [[UIButton alloc]init];
        NQbuttonEstTime.frame=CGRectMake(275, 4, 42, 24);
        NQbuttonEstTime.adjustsImageWhenHighlighted=NO;
        NQbuttonEstTime.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
        NQbuttonEstTime.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

        UIImage *NQbuttonesttimeimage = [UIImage imageNamed:@"NqN"];
        [NQbuttonEstTime setBackgroundImage:NQbuttonesttimeimage forState:UIControlStateNormal];
        [NQbuttonEstTime addTarget:self action:@selector(NQbutton:event:) forControlEvents:UIControlEventTouchUpInside];

        NQbuttonEstTime.backgroundColor = [UIColor clearColor];
        [cell.contentView addSubview:NQbuttonEstTime];      
        [NQbuttonEstTime release];

        if(ShowNQButton)//**this BOOL variable is outside of cellForRow decides if buttons  //should be visible or not when indexPath.row < myArray' count.**
        {
            NQbutton.hidden=NO;
            NQbuttonEstTime.hidden=NO;

        }
        else {
            NQbutton.hidden=YES;
            NQbuttonEstTime.hidden=YES;

        }


    } 
else
    {//i have added three dummy rows in numberOfRowsInSection(when indexpath.row > [myArray Count])
        waitTimeLabel.text=@" "; 
    EstSeatLabel.text=@" ";

        //below i am stuffing in removing/hiding these two contentViews from dummy cells 
        NQbutton.hidden=YES;//tried setImage=nil fornormalState//tried removeFromSupViw
        NQbuttonEstTime.hidden=YES;//tried setImage=nil fornormalState//tried removeFromSupViw
    }


}


return cell;

}

Есть предложения?спасибо

1 Ответ

0 голосов
/ 14 февраля 2012

Проблема с ячейкой dequeue. Если вы посмотрите свой код, вы добавляете две кнопки только на indexPath.row<[array cont] Логически это правильно. Так что попробуйте с предоставленным решением здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...