标签和Imageviews在iOS7中的自定义单元格中表现异常

李爱莲(Arianne Lee)

我有一个具有标签和图像视图的自定义单元格。根据条件显示标签和图像视图。滚动uitableview时,我的自定义单元格异常起作用。在某些情况下,当我滚动一个标签和imageview时,将显示该标签和imageview,但是当我滚动回imageviews和标签时,一个标签和imageview将消失,有时它会与另一个imageview和label重叠。到目前为止,这是我尝试过的操作:

static NSString *simpleTableIdentifier = @"JobDetailCell";
MTJobDetailCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier forIndexPath:indexPath];

if (cell == nil) {
    cell = [[MTJobDetailCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:simpleTableIdentifier];
}

我仍然得到相同的结果。我阅读了另一种解决方案,并将计算结果移到了customcell.m文件中。这是在layoutSubviews方法中。

NSInteger tempCount = [[NSUserDefaults standardUserDefaults] integerForKey:@"BenefitsCounter"];
NSDictionary *tempDictionary = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"IncentivesAndBenefits"]];
//TEST
NSLog(@"TEMP INT:%ld", (long)tempCount);
NSLog(@"TEMP ARRAY:%@", tempDictionary);

BOOL iFood = tempDictionary[@"food"][@"1"];
NSString* iFoodDescription = tempDictionary[@"food"][@"1"];
BOOL iCommission = tempDictionary[@"commission"][@"1"];
NSString* iCommissionDescription = tempDictionary[@"commission"][@"1"];
BOOL iUniform = tempDictionary[@"uniform"][@"1"];
NSString* iUniformDescription = tempDictionary[@"uniform"][@"1"];
BOOL iTransport = tempDictionary[@"transport"][@"1"];
NSString* iTransportDescription = tempDictionary[@"transport"][@"1"];
BOOL iExtras = tempDictionary[@"extras"][@"1"];
NSString* iExtrasDescription = tempDictionary[@"extras"][@"1"];

//MARK: POSITION labels and imageviews
int img_x = kImgStart_x;
int img_w = kImgStart_w;
int img_h = kImgStart_h;

//result value positions
int lbl_x = kLblStart_x;
int lbl_y = kLblStart_y;
int lbl_w = kLblStart_w;

if(tempCount == 1)
{
    if(iCommission)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iCommissionDescription];

        self.imgCommissionIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgCommissionIncentive.image = [UIImage imageNamed:@"icon-commission.png"];
        self.lblCommissionIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);
    }

    if(iExtras)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iExtrasDescription];

        self.imgExtrasIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgExtrasIncentive.image = [UIImage imageNamed:@"icon-extras.png"];
        self.lblExtrasIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);
    }

    if(iFood)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iFoodDescription];

        self.imgFoodIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgFoodIncentive.image = [UIImage imageNamed:@"icon-food.png"];
        self.lblFoodIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);
    }

    if(iTransport)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iTransportDescription];

        self.imgTransportIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgTransportIncentive.image = [UIImage imageNamed:@"icon-transport.png"];
        self.lblTransportIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);
    }

    if(iUniform)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iUniformDescription];

        self.imgUniformIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgUniformIncentive.image = [UIImage imageNamed:@"icon-uniform2.png"];
        self.lblUniformIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);
    }
}
else if (tempCount > 1)
{
    if(iCommission)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iCommissionDescription];

        self.imgCommissionIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgCommissionIncentive.image = [UIImage imageNamed:@"icon-commission.png"];
        self.imgCommissionIncentive.contentMode = UIViewContentModeScaleAspectFit;
        self.lblCommissionIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);

        lbl_y += kResult_Y_incr;
    }

    if(iExtras)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iExtrasDescription];

        self.imgExtrasIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgExtrasIncentive.image = [UIImage imageNamed:@"icon-extras.png"];
        self.imgExtrasIncentive.contentMode = UIViewContentModeScaleAspectFit;
        self.lblExtrasIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);

        lbl_y += kResult_Y_incr;
    }

    if(iFood)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iFoodDescription];

        self.imgFoodIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgFoodIncentive.image = [UIImage imageNamed:@"icon-food.png"];
        self.imgFoodIncentive.contentMode = UIViewContentModeScaleAspectFit;
        self.lblFoodIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);

        lbl_y += kResult_Y_incr;
    }

    if(iTransport)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iTransportDescription];

        self.imgTransportIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgTransportIncentive.image = [UIImage imageNamed:@"icon-transport.png"];
        self.imgTransportIncentive.contentMode = UIViewContentModeScaleAspectFit;
        self.lblTransportIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);

        lbl_y += kResult_Y_incr;
    }

    if(iUniform)
    {
        //decrement
        tempCount--;
        CGSize expectedSize =[self GetTextHightForLable:iUniformDescription];

        self.imgUniformIncentive.frame = CGRectMake(img_x, lbl_y, img_w, img_h);
        self.imgUniformIncentive.image = [UIImage imageNamed:@"icon-uniform2.png"];
        self.imgUniformIncentive.contentMode = UIViewContentModeScaleAspectFit;
        self.lblUniformIncentive.frame = CGRectMake(lbl_x, lbl_y, lbl_w, expectedSize.height+10);

        lbl_y += kResult_Y_incr;
    }
}

这是我的cellForRowAtIndexPath的代码:

    NSString *strIncentives = [[self.jobDetailDict objectForKey:@"sub_slots"] objectForKey:@"incentives_and_benefits"];
    if(![strIncentives length] == 0)
    {
        NSData *jsonData = [strIncentives dataUsingEncoding:NSUTF8StringEncoding];
        NSError *error;
        iBenefitsCounter = 0;

        incentives = [NSJSONSerialization
                      JSONObjectWithData:jsonData
                      options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves
                      error:&error];

        //TEST
        //NSLog(@"INCETIVES DICT: %@", incentives);

        //BOOL iCommission = incentives[@"commission"][@"1"];
        NSString *iCommissionDescription = incentives[@"commission"][@"1"];
        if([iCommissionDescription isEqualToString:@""] || incentives[@"commission"][@"0"])
        {
            [cell.imgCommissionIncentive setHidden:true];
            [cell.lblCommissionIncentive setHidden:true];
        }
        else
        {
            [cell.imgCommissionIncentive setHidden:false];
            cell.imgCommissionIncentive.image = [UIImage imageNamed:@"icon-commission.png"];

            [cell.lblCommissionIncentive setHidden:false];
            [cell.lblCommissionIncentive setText:iCommissionDescription];
            cell.lblCommissionIncentive.font = [UIFont fontWithName:@"GillSans-Light" size:13.0f];
            iBenefitsCounter++;
        }

        //BOOL iExtras = incentives[@"extras"][@"1"];
        NSString *iExtrasDescription = incentives[@"extras"][@"1"];
        if([iExtrasDescription isEqualToString:@""] || incentives[@"extras"][@"0"])
        {
            [cell.imgExtrasIncentive setHidden:true];
            [cell.lblExtrasIncentive setHidden:true];
        }
        else
        {
            [cell.imgExtrasIncentive setHidden:false];
            cell.imgExtrasIncentive.image = [UIImage imageNamed:@"icon-extras.png"];

            [cell.lblExtrasIncentive setHidden:false];
            [cell.lblExtrasIncentive setText:iExtrasDescription];
            cell.lblExtrasIncentive.font = [UIFont fontWithName:@"GillSans-Light" size:13.0f];
            iBenefitsCounter++;
        }

        //BOOL iFood = incentives[@"food"][@"1"];
        NSString *iFoodDescription = incentives[@"food"][@"1"];
        if([iFoodDescription isEqualToString:@""] || incentives[@"food"][@"0"])
        {
            [cell.imgFoodIncentive setHidden:true];
            [cell.lblFoodIncentive setHidden:true];
        }
        else
        {
            [cell.imgFoodIncentive setHidden:false];
            cell.imgFoodIncentive.image = [UIImage imageNamed:@"icon-food.png"];

            [cell.lblFoodIncentive setHidden:false];
            [cell.lblFoodIncentive setText:iFoodDescription];
            cell.lblFoodIncentive.font = [UIFont fontWithName:@"GillSans-Light" size:13.0f];
            iBenefitsCounter++;
        }

        //BOOL iTransport = incentives[@"transport"][@"1"];
        NSString *iTransportDescription = incentives[@"transport"][@"1"];
        if([iTransportDescription isEqualToString:@""] || incentives[@"transport"][@"0"])
        {
            [cell.imgUniformIncentive setHidden:true];
            [cell.lblUniformIncentive setHidden:true];
        }
        else
        {
            [cell.imgTransportIncentive setHidden:false];
            cell.imgTransportIncentive.image = [UIImage imageNamed:@"icon-transport.png"];

            [cell.lblUniformIncentive setHidden:false];
            [cell.lblTransportIncentive setText:iTransportDescription];
            cell.lblUniformIncentive.font = [UIFont fontWithName:@"GillSans-Light" size:13.0f];
            iBenefitsCounter++;
        }

        //BOOL iUniform = incentives[@"uniform"][@"1"];
        NSString *iUniformDescription = incentives[@"uniform"][@"1"];
        if([iUniformDescription isEqualToString:@""] || incentives[@"uniform"][@"0"])
        {
            [cell.imgUniformIncentive setHidden:true];
            [cell.lblUniformIncentive setHidden:true];

        }
        else
        {
            [cell.imgUniformIncentive setHidden:false];
            cell.imgUniformIncentive.image = [UIImage imageNamed:@"icon-uniform2.png"];

            [cell.lblUniformIncentive setHidden:false];
            [cell.lblUniformIncentive setText:iUniformDescription];
            cell.lblUniformIncentive.font = [UIFont fontWithName:@"GillSans-Light" size:13.0f];
            iBenefitsCounter++;
        }

        [[NSUserDefaults standardUserDefaults] setInteger:iBenefitsCounter forKey:@"BenefitsCounter"];
        [[NSUserDefaults standardUserDefaults]setObject:[NSKeyedArchiver archivedDataWithRootObject:incentives] forKey:@"IncentivesAndBenefits"];
        [[NSUserDefaults standardUserDefaults] synchronize];

        return cell;
    }

我的代码在iOS 8中可以完美运行。我非常困惑为什么它在iOS 7中不起作用。自上周以来,我一直在为此苦苦挣扎。有人能帮帮我吗。

Santu C

您可以尝试以下代码-

之后写下面的代码

if (cell == nil) {
    cell = [[MTJobDetailCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:simpleTableIdentifier];
}

for(UIView *view in cell.contentView.subviews){  
        if ([view isKindOfClass:[UIView class]]) {  
            [view removeFromSuperview];   
        }
    }

cell.clipsToBounds = YES;

如下所示添加所有UIlabel和UIImage

[cell.contentView addSubview:myLabel] ;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从自定义单元格选择中出现模态视图控制器的iOS7问题

来自分类Dev

标签栏涵盖iOS7中的TableView单元格

来自分类Dev

iOS 7自定义单元格未显示在表格视图中

来自分类Dev

iOS 7-无法在自定义UITableView单元格中设置UITextView的字体颜色

来自分类Dev

自定义TableView单元格中的标签在滚动后消失

来自分类Dev

UITableViewCell中的2个标签,无需自定义单元格

来自分类Dev

Xamarin.IOS tableview自定义单元格

来自分类Dev

将图像解析到ios中的“集合视图自定义”单元格中

来自分类Dev

dequeueReusableCellWithIdentifier和自定义单元格

来自分类Dev

Swift:在tableView单元格中设置标签和自定义参数

来自分类Dev

ios7中未使用UITableViewCellStyleDefault在iOS 7中拾取情节提要UITableView中的自定义单元格

来自分类Dev

如何使用segue为Facebook iOS Friend Picker自定义背景和单元格?

来自分类Dev

在“自定义”单元格中的按钮中设置标签的例外

来自分类Dev

iOS 7自定义单元格未在表格视图中显示

来自分类Dev

自定义TableView单元格中的标签在滚动后消失

来自分类Dev

UITableViewCell中的2个标签,无需自定义单元格

来自分类Dev

访问自定义单元格中的标签值

来自分类Dev

iOS,覆盖cellForRowAtIndexPath以返回自定义单元格

来自分类Dev

自定义单元格标签

来自分类Dev

在cellForRowIndexPath中的每个自定义单元格中创建标签

来自分类Dev

在自定义表格视图单元格中本地化按钮和标签[swift]

来自分类Dev

如何在iOS中管理自定义单元格标签值?

来自分类Dev

更改didSelectRowAtIndexPath中自定义单元格的标签高度

来自分类Dev

具有大图像和标签的自定义表格视图单元格

来自分类Dev

自定义单元格和按钮

来自分类Dev

具有图像和标签的自定义TableView单元格的大小

来自分类Dev

iOS Swift自定义单元格NavigationController

来自分类Dev

如何在表格视图单元格中隐藏自定义类标签?

来自分类Dev

为每个单元格添加带有标签和按钮的自定义 DataGridViewColumn

Related 相关文章

  1. 1

    从自定义单元格选择中出现模态视图控制器的iOS7问题

  2. 2

    标签栏涵盖iOS7中的TableView单元格

  3. 3

    iOS 7自定义单元格未显示在表格视图中

  4. 4

    iOS 7-无法在自定义UITableView单元格中设置UITextView的字体颜色

  5. 5

    自定义TableView单元格中的标签在滚动后消失

  6. 6

    UITableViewCell中的2个标签,无需自定义单元格

  7. 7

    Xamarin.IOS tableview自定义单元格

  8. 8

    将图像解析到ios中的“集合视图自定义”单元格中

  9. 9

    dequeueReusableCellWithIdentifier和自定义单元格

  10. 10

    Swift:在tableView单元格中设置标签和自定义参数

  11. 11

    ios7中未使用UITableViewCellStyleDefault在iOS 7中拾取情节提要UITableView中的自定义单元格

  12. 12

    如何使用segue为Facebook iOS Friend Picker自定义背景和单元格?

  13. 13

    在“自定义”单元格中的按钮中设置标签的例外

  14. 14

    iOS 7自定义单元格未在表格视图中显示

  15. 15

    自定义TableView单元格中的标签在滚动后消失

  16. 16

    UITableViewCell中的2个标签,无需自定义单元格

  17. 17

    访问自定义单元格中的标签值

  18. 18

    iOS,覆盖cellForRowAtIndexPath以返回自定义单元格

  19. 19

    自定义单元格标签

  20. 20

    在cellForRowIndexPath中的每个自定义单元格中创建标签

  21. 21

    在自定义表格视图单元格中本地化按钮和标签[swift]

  22. 22

    如何在iOS中管理自定义单元格标签值?

  23. 23

    更改didSelectRowAtIndexPath中自定义单元格的标签高度

  24. 24

    具有大图像和标签的自定义表格视图单元格

  25. 25

    自定义单元格和按钮

  26. 26

    具有图像和标签的自定义TableView单元格的大小

  27. 27

    iOS Swift自定义单元格NavigationController

  28. 28

    如何在表格视图单元格中隐藏自定义类标签?

  29. 29

    为每个单元格添加带有标签和按钮的自定义 DataGridViewColumn

热门标签

归档