Ниже мой код.

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellTwo" forIndexPath:indexPath]; 
UILabel * name = (UILabel *)[cell viewWithTag:4];
UILabel * age = (UILabel *)[cell viewWithTag:5];
UILabel * city = (UILabel *)[cell viewWithTag:6];

NSString * currentDate = self.calenderDates[indexPath.section];
NSArray * dicDate = [self.dataDictionay valueForKey:currentDate];

UIButton * checkinBtn = (UIButton*)[cell viewWithTag:9];
UIButton * checkoutBtn = (UIButton*)[cell viewWithTag:10];

checkinBtn.tag = indexPath.row;
checkoutBtn.tag = indexPath.row;

NSString * papikDate = [dicDate[indexPath.row] valueForKey:@"strat_date"];

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSString * todayDate = [dateFormat stringFromDate:[NSDate date]];

if ([papikDate isEqualToString:todayDate]) {
    [checkinBtn setHidden:NO];
    [checkinBtn setHidden:NO];
} else {  
    [checkinBtn setHidden:YES];
    [checkinBtn setHidden:YES];
}

При прокрутке tableview "if condition" выполняется, но кнопки не скрываются. что я хотел сделать, так это то, что если текущая дата и дата в кнопке соответствия API появляются, иначе кнопка остается скрытой.

Muhammad Anum

Ответов: 1

Ответы (1)

Следующий код вызовет серьезные проблемы:

UIButton * checkinBtn = (UIButton*)[cell viewWithTag:9];
UIButton * checkoutBtn = (UIButton*)[cell viewWithTag:10];

checkinBtn.tag = indexPath.row;
checkoutBtn.tag = indexPath.row;

Это работает в первый раз, когда вы используете ячейку, как только вы повторно используете ячейку, теги больше не будут совпадать, и вы не получите фактическую кнопку. Если вы создаете первую ячейку, вы затем устанавливаете теги checkinBtn на 0. После того, как вы прокрутите эту ячейку за пределы экрана и она будет повторно использована, вы больше не сможете найти кнопку в индексе. 9 или 10, так как вы ранее изменили этот тег.

Вместо того, чтобы делать магию тегов, вам следует создать собственный подкласс UITableViewCell, в котором вы создаете выходы для всех необходимых элементов интерфейса и получаете к ним доступ через выходы вместо тегов. После создания подкласса назначьте его в раскадровке ячейке.

2022 WebDevInsider