gpt4 book ai didi

ios - Labels 和 Imageviews 在 iOS7 的自定义单元格中表现异常

转载 作者:行者123 更新时间:2023-11-29 02:00:16 25 4
gpt4 key购买 nike

我有一个带有标签和 ImageView 的自定义单元格。标签和 ImageView 根据条件显示。滚动 uitableview 时,我的自定义单元格表现异常。有一种情况,当我滚动一个标签和 ImageView 时,会显示标签和 ImageView ,但是当我滚动回 ImageView 并标记一个标签和 ImageView 时,它会消失,有时它会与另一个 ImageView 和标签重叠。到目前为止,这是我尝试过的:

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 中不起作用。自上周以来我一直在努力解决这个问题。有人可以帮帮我吗。

最佳答案

您可以尝试下面的代码 -

之后写入以下代码
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] ;

关于ios - Labels 和 Imageviews 在 iOS7 的自定义单元格中表现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com