Как скрыть определенную кнопку строки в Dynamic UITableViewCell в Objective C?

Я реализовал динамическое табличное представление, текстовое поле и кнопки. Моя проблема в том, что когда я скрываю кнопку в первой строке моего UITableViewCell, другие пять строк кнопки ячейки также скрываются.

Может ли кто-нибудь предложить решение этой проблемы?

Я пробовал ниже код..

ladiesdetails=[[NSMutableArray alloc]initWithObjects:@"2",@"0",@"0",@"0",@"0",@"0", nil];



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return 6;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{


    static NSString *CellIdentifier = @"cell1";

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[passengerdetailcell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
if([[ladiesdetails objectAtIndex:indexPath.row] intValue]==2)
{
cell.malebutton.hidden=yes;
}
return cell;
}

person Shubam Gupta    schedule 16.12.2017    source источник
comment
когда вы скрываете malebutton в indexPath.row==2, вы также должны показывать и другие индексные пути. напишите hidden=no; в else части условия if и попробуйте.   -  person iNiravKotecha    schedule 16.12.2017


Ответы (3)


как это

bool flag = ([[ladiesdetails objectAtIndex:indexPath.row] intValue] == 2)
cell.malebutton.hidden = flag
person Abhishek Thapliyal    schedule 16.12.2017
comment
Краткость приемлема, но полные объяснения лучше. - person dustin.schultz; 17.12.2017

Просто поставьте условие else и сделайте кнопку видимой в методе cellForRowAtIndexPath. Если у вас есть какие-либо другие условия для отображения, добавьте их.

if([[ladiesdetails objectAtIndex:indexPath.row] intValue] == 2) {
   cell.malebutton.hidden = YES;
} else {
   cell.malebutton.hidden = NO;
}
person Suhit Patil    schedule 16.12.2017

Это происходит из-за повторного использования ячейки, вы используете выделение ячейки, как показано ниже.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        // Return the number of rows in the section.
        return 6;
    }
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        PassengerDetailTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PassengerDetailCell" forIndexPath:indexPath];
        if([[self.ladiesdetails objectAtIndex:indexPath.row] intValue]==2)
        {
            cell.maleButton.hidden = TRUE;
        }
        return cell;
    }
person Vinodh    schedule 17.12.2017
comment
PassengerDetailTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@PassengerDetailCell forIndexPath:indexPath]; эта строка показывает ошибку, например NSInternalConsistencyException: невозможно удалить ячейку из очереди. Почему эта ошибка - person Shubam Gupta; 18.12.2017
comment
проверьте, импортируете ли вы правильный заголовок и имя класса одинаково, мой код будет иметь другое имя класса - person Vinodh; 19.12.2017