ios - 如何解决 iOS UITableView 在滚动时覆盖 UILabel 和 UITextField?

标签 ios objective-c xcode ipad ios7

在我的应用程序中,我有 uitableview,其中添加了多个 uitexfiled 和 uiLabel 作为 subview 。 但是当我滚动 UItableView 时,它会覆盖 uilabel 文本和 uitexfiled 文本......

以下是我的代码:->

.h file

@property (nonatomic, retain)UILabel *lblCompany_name;

@property (nonatomic, retain)UILabel *lblCompany_address1;

@property (nonatomic, retain)UILabel *lblCompany_address2;

@property (nonatomic, retain)UILabel *lblCompany_city;

@property (nonatomic, retain)UILabel *lblCompany_state;

@property (nonatomic, retain)UILabel *lblCompany_zip;

@property (nonatomic, retain)UILabel *lblCompany_country;

@property (nonatomic, retain)UILabel *lblCompany_telephone;

@property (nonatomic, retain)UILabel *lblCompany_website;

@property (nonatomic, retain)UILabel *lblCompany_type;

@property (nonatomic, retain)UILabel *lblCompany_notes;


@property (nonatomic, retain)UILabel *lblCompany_contacts;

@property (nonatomic, retain)UILabel *lblCompany_projects;

@property (nonatomic, retain)UILabel *lblCompany_activities;




@property(nonatomic, retain)UITextField *txtCompany_name;

@property(nonatomic, retain)UITextField *txtCompany_address1;

@property(nonatomic, retain)UITextField *txtCompany_address2;

@property(nonatomic, retain)UITextField *txtCompany_city;

@property(nonatomic, retain)UITextField *txtCompany_state;

@property(nonatomic, retain)UITextField *txtCompany_zip;

@property(nonatomic, retain)UITextField *txtCompany_country;

@property(nonatomic, retain)UITextField *txtCompany_telephone;

@property(nonatomic, retain)UITextField *txtCompany_website;

@property(nonatomic, retain)UITextField *txtCompany_type;




in .m File

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 4;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

int num = 0;

 switch (section) 
{

case 0:

num = 9;

break;

case 1:

 num = 2;

break;

case 2:

 num = 2;

break;

case 3:

num = 3;

break;

default:

break;

}

return num;

}

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

{


    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) 
{

cell = [[UITableViewCell alloc]

initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

if ([indexPath section]==0)

{

if ([indexPath row]==0)

{

lblCompany_name = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

lblCompany_name.tag = 1;


[lblCompany_name setBackgroundColor:[UIColor redColor]];

[lblCompany_name setTextColor:[UIColor blackColor]];

[lblCompany_name setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_name];


txtCompany_name = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_name.placeholder=@"Name";

[txtCompany_name setTextColor:[UIColor blackColor]];

[txtCompany_name setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_name];

}

else if ([indexPath row]==1)

{

lblCompany_address1 = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_address1 setBackgroundColor:[UIColor blueColor]];

[lblCompany_address1 setTextColor:[UIColor blackColor]];

[lblCompany_address1 setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_address1];


txtCompany_address1 = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_address1.placeholder=@"address1";

[txtCompany_address1 setTextColor:[UIColor blackColor]];

[txtCompany_address1 setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_address1];

}

else if ([indexPath row]==2)

{

lblCompany_address2 = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_address2 setBackgroundColor:[UIColor blueColor]];

[lblCompany_address2 setTextColor:[UIColor blackColor]];

[lblCompany_address2 setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_address2];


txtCompany_address2 = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_address2.placeholder=@"address2";

[txtCompany_address2 setTextColor:[UIColor blackColor]];

[txtCompany_address2 setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_address2];

}

else if ([indexPath row]==3)

{

lblCompany_city = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_city setBackgroundColor:[UIColor blueColor]];

[lblCompany_city setTextColor:[UIColor blackColor]];

[lblCompany_city setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_city];


txtCompany_city = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_city.placeholder=@"address3";

[txtCompany_city setTextColor:[UIColor blackColor]];

[txtCompany_city setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_city];

}

else if ([indexPath row]==4)

{

lblCompany_state = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_state setBackgroundColor:[UIColor blueColor]];

[lblCompany_state setTextColor:[UIColor blackColor]];

[lblCompany_state setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_state];


txtCompany_state = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_state.placeholder=@"address4";

[txtCompany_state setTextColor:[UIColor blackColor]];

[txtCompany_state setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_state];

}

else if ([indexPath row]==5)

{

UIPickerView *statePicker = [[UIPickerView alloc] initWithFrame:CGRectMake(10, 5, 400,216)];

[statePicker setHidden:YES];

[statePicker setDelegate:self];

[statePicker setDataSource:self];

[statePicker setBackgroundColor:[UIColor whiteColor]];

[statePicker setTag:indexPath.row];

[cell.contentView addSubview:statePicker];

}

else if ([indexPath row]==6)

{

lblCompany_zip = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_zip setBackgroundColor:[UIColor blueColor]];

[lblCompany_zip setTextColor:[UIColor blackColor]];

[lblCompany_zip setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_zip];


txtCompany_zip = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_zip.placeholder=@"address5";

[txtCompany_zip setTextColor:[UIColor blackColor]];

[txtCompany_zip setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_zip];

}

else if ([indexPath row]==7)

{

lblCompany_country = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_country setBackgroundColor:[UIColor blueColor]];

[lblCompany_country setTextColor:[UIColor blackColor]];

[lblCompany_country setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_country];


txtCompany_country = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_country.placeholder=@"address6";

[txtCompany_country setTextColor:[UIColor blackColor]];

[txtCompany_country setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_country];

}

else if ([indexPath row]==8)

{

UIPickerView *countryPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(10, 5, 400, 

216)];

[countryPicker setHidden:YES];

[countryPicker setDelegate:self];

[countryPicker setDataSource:self];

[countryPicker setBackgroundColor:[UIColor whiteColor]];

[countryPicker setTag:indexPath.row];

[cell.contentView addSubview:countryPicker];


}

}

else if ([indexPath section]==1)

{

if ([indexPath row]==0)

{

lblCompany_telephone = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_telephone setBackgroundColor:[UIColor blueColor]];

[lblCompany_telephone setTextColor:[UIColor blackColor]];

[lblCompany_telephone setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_telephone];


txtCompany_telephone = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_telephone.placeholder=@"address7";

[txtCompany_telephone setTextColor:[UIColor blackColor]];

[txtCompany_telephone setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_telephone];

}

else if ([indexPath row]==1)

{

lblCompany_website = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_website setBackgroundColor:[UIColor blueColor]];

[lblCompany_website setTextColor:[UIColor blackColor]];

[lblCompany_website setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_website];


txtCompany_website = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_website.placeholder=@"address8";

[txtCompany_website setTextColor:[UIColor blackColor]];

[txtCompany_website setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_website];           

}


}

else if ([indexPath section]==2)

 {

 if ([indexPath row]==0)

{

lblCompany_type = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_type setBackgroundColor:[UIColor blueColor]];

[lblCompany_type setTextColor:[UIColor blackColor]];

[lblCompany_type setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_type];


txtCompany_type = [[UITextField alloc]initWithFrame:CGRectMake(150, 5, 400, 40)];

txtCompany_type.placeholder=@"address9";

[txtCompany_type setTextColor:[UIColor blackColor]];

[txtCompany_type setBorderStyle:UITextBorderStyleNone];

[cell addSubview:txtCompany_type];



}

else if ([indexPath row]==1)

{

lblCompany_notes = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_notes setBackgroundColor:[UIColor blueColor]];

[lblCompany_notes setTextColor:[UIColor blackColor]];

[lblCompany_notes setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_notes];

}

}

else if ([indexPath section]==3)

{

if ([indexPath row]==0) 
{

lblCompany_contacts = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_contacts setBackgroundColor:[UIColor blueColor]];

[lblCompany_contacts setTextColor:[UIColor blackColor]];

[lblCompany_contacts setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_contacts];


UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

[btn setImage:[UIImage imageNamed:@"blue_plus_sign.png"] forState:UIControlStateNormal];

[btn setFrame:CGRectMake(400, 4, 30, 30)];

cell.accessoryView = btn;

[cell addSubview:btn];


}

else if ([indexPath row]==1)

{

lblCompany_projects = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_projects setBackgroundColor:[UIColor blueColor]];

[lblCompany_projects setTextColor:[UIColor blackColor]];

[lblCompany_projects setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_projects];



UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

[btn setImage:[UIImage imageNamed:@"blue_plus_sign.png"] forState:UIControlStateNormal];

[btn setFrame:CGRectMake(400, 4, 30, 30)];

cell.accessoryView = btn;

[cell addSubview:btn];

}

else if ([indexPath row]==2)

{

lblCompany_activities = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 150, 140)];

[lblCompany_activities setBackgroundColor:[UIColor blueColor]];

[lblCompany_activities setTextColor:[UIColor blackColor]];

[lblCompany_activities setFont:[UIFont boldSystemFontOfSize:14]];

[cell addSubview:lblCompany_activities];


UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

[btn setImage:[UIImage imageNamed:@"blue_plus_sign.png"] forState:UIControlStateNormal];

[btn setFrame:CGRectMake(400, 4, 30, 30)];

cell.accessoryView = btn;

[cell addSubview:btn];


}


}



}


return cell;
}

当我滚动 UITableView 时,UILabel 和 UITextFiled 文本被覆盖。?

我不能在 uiLabel 上设置文本吗?

谁能帮我解决这个问题吗?

最佳答案

在你的代码中你写下了一个 IF 条件

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

请从这里删除此条件...

if (cell == nil) 
{
}

删除它会正常工作

关于ios - 如何解决 iOS UITableView 在滚动时覆盖 UILabel 和 UITextField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25052644/

相关文章:

ios - El Capitan 和 Xcode 7.1 的更新给了我可怕的默认转换

ios - TableView Xcode10/Swift 4 中的标签被切断

ios - 如何为 2 个不同的 UIImageView 调用 TouchesMoved

ios - 在 obj-c 中调用类方法时出错

iphone - 在哪里可以找到游戏开发物理教程的最佳位置?

objective-c - AQGridView长按网格单元检测

ios - UITableViewCell 显示文档文件夹中的错误结果

ios - firebase runTransactionBlock

ios - 如何使用调试配置指定项目的自定义 xcconfig

swift - 为什么扩展程序无法访问 private?