当设备旋转时,TableView Cell中显示两个uibutton

时间:2016-10-17 12:00:46

标签: ios objective-c uitableview uibutton uiinterfaceorientation

我正在使用带有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;

2 个答案:

答案 0 :(得分:1)

您说代码在您的-cellForRow(at:)方法中。由于表视图重用其单元,因此您的代码必须考虑其先前已配置的单元。一种好的方法是避免在此方法中向单元格添加任何按钮或其他视图,只需将它们添加到故事板中即可。如果您必须向单元格添加视图,则应删除之前添加的任何视图,或者只是重复使用它们,避免再次添加它们。

答案 1 :(得分:0)

您需要在分配init之前从超级视图中删除按钮。