ios - 加在tableviewcell 的contentview的label刚开始显示不出来是怎么回事?
PHPz
PHPz 2017-04-17 17:38:27
0
3
296

订单管理那个cell 加了个红色label。
但是一开始显示不出来,滑动tableview,重新刷新一下,才显示
如图:

代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier = @"tableViewCell" ;
    UITableViewCell *result ;
    result = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (result == nil) {
        result = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    else{
        while ([result.contentView.subviews lastObject] != nil) {
            [[result.contentView.subviews lastObject] removeFromSuperview];
        }
    }
if ([result.textLabel.text isEqualToString:@"订单管理"]){
                UILabel *newMsgLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 20, 20)];
                newMsgLabel.center = CGPointMake(result.vRightPos - 70, result.vHeight/2);
                newMsgLabel.text = @"1   ";
                [newMsgLabel sizeToFit];
                newMsgLabel.textColor = WHITE_COLOR;
                newMsgLabel.textAlignment = NSTextAlignmentCenter;
                newMsgLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth;
                newMsgLabel.font = TF_FONT_LEVEL_1;
                newMsgLabel.backgroundColor = RED_COLOR;
                newMsgLabel.layer.cornerRadius = newMsgLabel.vHeight/2;
                newMsgLabel.clipsToBounds = YES;
                [result.contentView addSubview:newMsgLabel];
        }
        }
PHPz
PHPz

学习是最好的投资!

répondre à tous(3)
洪涛

Je pense que vous feriez mieux de définir une classe distincte pour les cellules avec des points rouges et d'essayer de ne pas créer de code de vue dans le contrôleur.

Comment personnaliser tableviewCell, vous pouvez vous référer à ce blog : http://www.hcios.com/archives/460

迷茫

Il est recommandé d'ajouter ce point rouge à l'avance. Contrôlez ensuite l'affichage et le masquage dans cellForRowAtIndexPath.

迷茫

Où avez-vous attribué la valeur à result.textLabel.text ? Avant d'exécuter [result.textLabel.text isEqualToString:@"Order Management"], aucune opération d'affectation n'est visible dans le code que vous avez donné, on suppose donc que cela est dû à un mauvais ordre d'affectation et de jugement.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal