我正在使用带有TableViewCell的TableView。我已经以编程方式向单元格添加了ImageView,Text和uibutton。按钮的框架设置为纵向和横向不同。但是当设备从纵向旋转到横向时,显示的是两个按钮而不是一个。
我在横向模式按钮时尝试删除按钮,但它无效。
switch ([indexPath section])
{
case 0:
{
cell.imageView.image = [UIImage imageNamed:@"active.png"];
cell.textLabel.text = @"Application Name";
self.uninstallApplicationButton = [[UIButton alloc] init];
self.uninstallApplicationButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.uninstallApplicationButton setTitle:@"Install" forState: UIControlStateNormal];
[self.uninstallApplicationButton setBackgroundColor:[UIColor brownColor]];
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (device == UIUserInterfaceIdiomPhone)
{
if (UIInterfaceOrientationIsLandscape(orientation))
{
self.uninstallApplicationButton.frame = CGRectMake(490.0, 25.0, 65.0, 30.0);
}
else if(UIInterfaceOrientationIsPortrait(orientation))
{
self.uninstallApplicationButton.frame = CGRectMake(250.0, 25.0, 65.0, 30.0);
}
}
else if(device == UIUserInterfaceIdiomPad)
{
self.uninstallApplicationButton.frame = CGRectMake(600.0, 25.0, 150.0, 30.0);
}
}
[cell.contentView addSubview:uninstallApplicationButton];
break;
答案 0 :(得分:1)
您说代码在您的-cellForRow(at:)
方法中。由于表视图重用其单元,因此您的代码必须考虑其先前已配置的单元。一种好的方法是避免在此方法中向单元格添加任何按钮或其他视图,只需将它们添加到故事板中即可。如果您必须向单元格添加视图,则应删除之前添加的任何视图,或者只是重复使用它们,避免再次添加它们。
答案 1 :(得分:0)
您需要在分配init之前从超级视图中删除按钮。