Имам табличен изглед с tableviewcell, зададен на Custom в Storyboard. Имам 1 бутон най-вдясно на всяка клетка (бутон в клетка).
при зареждане на всяка клетка, в зависимост от състоянието, този бутон трябва да се покаже или скрие. Но не работи според очакванията. Докато превъртам надолу и отново нагоре, бутоните, които преди това бяха скрити (с правилно състояние), сега се показват.
Правя същото с изображението в клетката и изображението се зарежда правилно дори при превъртане.
Ето моя код
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"cell1";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIButton *btnCall = (UIButton *) [cell viewWithTag:5];
UIImageView *imgIcon = (UIImageView *) [cell viewWithTag:6];
[btnCall setHidden:TRUE];
if (... some condition ...) {
[btnCall setHidden:false];
[imgIcon setImage:[UIImage imageNamed:@"icon1.png"]]; // load correctly
} else {
[btnCall setHidden:true]; // doesn't seem to work consistently.
[imgIcon setImage:[UIImage imageNamed:@"icon2.png"]]; // load correctly
}
return cell;
}
В моя Storyboard този бутон в прототипната клетка също е настроен на скрит.
Прочетох много от въпросите и отговорите по този въпрос.
- единият е този UIButton subview в UITableViewCell не се скрива според очакванията. Но моята вече е персонализирана клетка (зададена в Storyboard).
- още един: iPhone TableViewCell - бутон за добавяне и премахване с условие . Но това изисква създаване на бутон в блока "if (cell == nil)", който не използвам. Защото, ако използвам, всичките ми други неща (етикети, изображения, които се добавят към персонализирана клетка чрез Storyboard) не се показват. И наистина искам да използвам сценария, вместо да добавям елементи програмно чрез блока "if (cell == nil)".
- и други... но никой не работи досега.
Имам и други неща като изображение във всяка клетка. И изображенията се зареждат правилно, дори при превъртане нагоре/надолу.
Може ли някой да помогне, моля? Благодаря много!
****РЕДАКТИРАНЕ 1 -- ПРОБЛЕМЪТ РАЗРЕШЕН!!! ****
Подкласифицирам клетката си, за да може нулирането ми да бъде по-правилно. Ето как се прави (вместо това замествам бутона по-горе с изображение - запазете го, тъй като бутонът също трябва да работи добре):
@implementation PSCellMyTableViewCell
@synthesize imgView1 = _imgView1, imgView2 = _imgView2;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
self.imgView1.image = nil;
self.imgView2.image = nil;
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
Код за cellForRowAtIndexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"cell1";
PSCellMyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (... some condition ...) {
[cell.imgView1 setImage:[UIImage imageNamed:@"icon-1.png"]];// no longer using tag
[cell.imgView2 setImage:[UIImage imageNamed:@"icon-12.png"]]; // no longer using tag
} else {
[cell.imgView1 setImage:[UIImage imageNamed:@"icon-2.png"]];// no tag
[cell.imgView2 setImage:[UIImage imageNamed:@"icon-22.png"]]; // no tag
}
return cell;
}