0
我有一個具有標籤和圖像視圖的自定義單元格。標籤和圖像視圖根據條件顯示。當uitableview滾動時,我的自定義單元格很奇怪。有一個例子,當我滾動一個標籤和imageview的標籤和圖像視圖顯示,但當我滾動回圖像和標籤一個標籤和imageview將消失,有時它重疊另一個imageview和標籤。這是我到目前爲止所嘗試的:標籤和Imageviews奇怪的行爲在iOS7的自定義單元中
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工作,我一直在這個掙扎自去年周。 有人可以幫我。
嘿感謝您的答覆..但我應該在哪裏[cell.contentView addSubview:myLabel];我只是試過這個解決方案,它現在不顯示任何東西.. –
檢查你的customcell.m你添加self.lblCommissionIncentive或以其他方式發佈完整customcell.m,我會告訴你確切的地方需要添加。 –
標籤和imageviews不是以編程方式創建的。這就是我所做的,我刪除了(UIView *在cell.contentView.subviews中查看){...}並且標籤和圖像視圖再次顯示.. –