2015-02-18 2 views
0

Im использует Custome uitableview, чтобы избежать падения производительности.Элемент не отображается после UItableviewCell SubClass

это, как я заполнить мою ячейку таблицы:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    NSString *reuseIdentifier = [NSString stringWithFormat:@"cell_%ld",(long)indexPath.row]; 

    SubcategoryTableViewCell * sctvCell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier]; 

    if (sctvCell == nil) { 
     sctvCell= [[SubcategoryTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]; 

    } 
    sctvCell.contentView.translatesAutoresizingMaskIntoConstraints = NO; 

     [sctvCell.label setText:appRecord.title]; 
    return sctvCell; 

} 

в моем "SubcategoryTableViewCell.h" заголовок с IBOutlet пункта в ячейке:

@property (weak, nonatomic) IBOutlet UILabel *mood_count_lbl; 

и в моем "SubcategoryTableViewCell.m" класс:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 

    [super setSelected:selected animated:animated]; 

} 
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 

    if(self){ 

     self.contentView.backgroundColor = [UIColor clearColor]; 
     UIView *whiteRoundedCornerView = [[UIView alloc] initWithFrame:CGRectMake(10,10,300,150)]; 
     whiteRoundedCornerView.backgroundColor = [UIColor whiteColor]; 
     whiteRoundedCornerView.layer.masksToBounds = NO; 
     whiteRoundedCornerView.layer.cornerRadius = 3.0; 
     [whiteRoundedCornerView.layer setShadowColor:[UIColor grayColor].CGColor]; 
     whiteRoundedCornerView.layer.shadowOffset = CGSizeMake(-1, 1); 
     whiteRoundedCornerView.layer.shadowOpacity = 0.2; 
     [self.contentView addSubview:whiteRoundedCornerView]; 
     [self.contentView sendSubviewToBack:whiteRoundedCornerView]; 



     return self; 

    } 

с указанным выше кодом отображается в ячейке, за исключением границы и тени, что i

сделано в custome cell.

также элемент в ячейке правильно подключен к ячейке custome.

проблема связана с динамическим «reuseIdentifier», который я сделал?

если я изменить его обратно в этом коде все хорошо работает без настройки ячейки таможенной и подклассов:

NSString *reuseIdentifier = @"PlaceholderCell2"; 
UITableViewCell * sctvCell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier]; 

if (sctvCell == nil) { 
    sctvCell= [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]; 

} 

даже если я изменить мой код так:

self.contentView.backgroundColor = [UIColor clearColor]; 
UIView *whiteRoundedCornerView = [[UIView alloc] initWithFrame:CGRectMake(10,10,300,150)]; 
whiteRoundedCornerView.backgroundColor = [UIColor whiteColor]; 
whiteRoundedCornerView.layer.masksToBounds = NO; 
whiteRoundedCornerView.layer.cornerRadius = 3.0; 
[whiteRoundedCornerView.layer setShadowColor:[UIColor grayColor].CGColor]; 
whiteRoundedCornerView.layer.shadowOffset = CGSizeMake(-1, 1); 
whiteRoundedCornerView.layer.shadowOpacity = 0.2; 
[self.contentView addSubview:whiteRoundedCornerView]; 
UILabel *_lblTitle = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
[self.contentView addSubview:_lblTitle]; 
[self.contentView sendSubviewToBack:whiteRoundedCornerView]; 

нового лейбл теперь показывает вверх ,

Я проверяю имя и класс ячейки, и все в порядке.

enter image description here

мой "SubCategoryViewController.m" Код: http://paste2.org/_nCY8zF9w

мой "SubcategoryTableViewCell.m" Код: http://paste2.org/_h9AJnzcV

мой "SubcategoryTableViewCell.h" Код: http://paste2.org/_vUJjEcXV

ответ

2

Вы установка текста на sctvCell.label, что это за ярлык? У вас также есть label с тегом value 1. Какую метку вы хотите использовать?

Предполагая, что вы хотите использовать метку с тегом и функцию initWithStyle:reuseIdentifier, вы должны добавить метку в эту функцию, а затем установить текст на эту метку. reuseIdentifier является динамическим, который должен быть статическим. Для вашей ячейки нужен только один идентификатор.

Предполагая, что вы хотите использовать метку IBoutlet, вы загружаете ячейки из xib или раскадровки, как для iOS 8, если вы установили ячейку в своей таблице с помощью reuseIdentifier, ячейка, загруженная из раскадровки, всегда будет иметь значение, поэтому он не может быть ник. Возможно, вы захотите добавить свой код для настройки в метод awakeFromNib в подклассе соты.

+0

спасибо за ответ и извините за ошибку. версия тега была старой. im, использующий Iboutlet, который связан с заголовком ячейки custome. im компиляция для ios 7.1+. в моем классе ячеек класса im, не используя какой-либо вид xib. –

+0

Затем вы можете использовать последний метод. – gabbler

+0

из-за предложения ur я переместил мой «- (id) initWithStyle« to »- (void) awakeFromNib« теперь ничто не показывает на моем столе даже границы, которые я сделал. –

Смежные вопросы