Взгляните на этот вопрос, а второй ответ дает большое описание.
Короче говоря, вы не должны использовать viewDiLoad
обратного вызова, но вместо этого
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { ... }
Здесь вы можете настроить фон каждой ячейки, как вы хотите, просто перезагрузить строку, когда пользователь щелкает.
How to customize the background color of a UITableViewCell?
EDIT
Теперь, потому что вы добавили свой код я могу ясно видеть проблему:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"BTSTicketsCellIdentifier";
CRHomeCategCell *cell = (CRHomeCategCell *)[_tblCateg dequeueReusableCellWithIdentifier:CellIdentifier];
cell.backgroundView = nil;
}
Это не делает то, что вы думаете, что он делает. dequeueReusableCellWithIdentifier:CellIdentifier
дает вам новый экземпляр ячейки, основанный на идентификаторе, идентифицированном идентификатором.
Вы не получаете ссылку на строку здесь, вы создаете новую строку и устанавливаете ее фон на нуль.
Ваш код должен быть чем-то больше, как это:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath{
if(indexPath.row==0){
if(cell.backgroundView == nil)
{
cell.backgroundView = [ [UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"active-tab.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];
NSLog(@"willDisplayCell");
}
else
{
cell.backgroundView = nil;
NSLog(@"willHideCell");
}
}
}
Это не большое решение, я лично бы сделать что-то еще, как с этим пользовательские ячейки провести логическое и переключить его состояние и проверьте. Но это зависит от вас, чтобы развиваться, это общая идея о том, как она должна работать.
EDIT 2:
Поскольку вы решили запустить его в didSelectRowAtIndexPath
, а также полностью не в состоянии делать какие-либо уровень исследований или сдачи каких-либо усилий в свою работу я мог бы предложить метод:
tableView cellForRowAtIndexPath:<#(NSIndexPath *)#>
Вы должны включить больше кода, чтобы я t легко для людей, чтобы увидеть, как вы пытаетесь это сделать, а не гадать –
, не забудьте отметить верхний ответ и перенести ответ (-ы), который вам помог. Люди, столкнувшиеся с одной и той же проблемой, захотят узнать, что исправила вашу проблему, и тех, кто поставил время на ответ на ваш вопрос, заслуживают точки репутации. –
Я удалил свою нижнюю часть только потому, что был добавлен код, который помог выявить проблему.Тем не менее, я чувствую, что этого вопроса все еще немного не хватает, и в следующий раз я бы посоветовал вам приложить немного больше усилий, поскольку другие будут с большей вероятностью закрыть вопрос, увидев, что –