在iOS 6中更改Orientation后,UITableViewCell contentView按钮消失

时间:2014-02-06 08:30:11

标签: ios uitableview

 if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
 {
    //Landscape mode.
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)  //Frame for iPad
    {
        [deleteButton setFrame:CGRectMake(984, 7, 30, 30)];
        [editButton setFrame:CGRectMake(944, 7, 30, 30)];
    }
    else
    {
        if ([[UIScreen mainScreen] bounds].size.height==568)
        {
            [deleteButton setFrame:CGRectMake(530, 10, 30, 30)];   //Frame for  iPhone
            [editButton setFrame:CGRectMake(490, 10, 30, 30)];
        }
        else
        {
            [deleteButton setFrame:CGRectMake(440, 10, 30, 30)];  //Frame for iPhone
            [editButton setFrame:CGRectMake(400, 10, 30, 30)];
        }
    }
 }
 else
 {
    //Portrait mode.
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)    //Frame for iPad
    {
        [deleteButton setFrame:CGRectMake(730, 7, 30, 30)];
        [editButton setFrame:CGRectMake(690, 7, 30, 30)];
    }
    else
    {
        [deleteButton setFrame:CGRectMake(280, 7, 30, 30)];     //Frame for iPhone
        [editButton setFrame:CGRectMake(240, 7, 30, 30)];
    }
 }

 [cell.contentView addSubview:editButton];      //Added button subview to cell.
 [cell.contentView addSubview:deleteButton];

 cell.selectionStyle = UITableViewCellSelectionStyleNone;

 return cell;   //This code is being executed perfectly in iOS 6 also.

我正在开发一款通用应用。但是当我运行应用程序时,在iOS 7中它运行得非常好,在iOS 6的情况下,自定义编辑&加载屏幕时第一次出现删除按钮。但是当我改变方向时,它会从屏幕上消失。我在更改方向时重新加载表视图,但它仍然消失。任何人都可以帮助我。深入了解项目的最后一点。

1 个答案:

答案 0 :(得分:0)

假设此代码位于tableView:cellForRowAtIndexPath:,您只需将deleteButtoneditButton作为单元格的子视图添加到表格必须创建新单元格(例如,在滚动期间,方向更改,或致电-reloadData)。由于单元格被重用,因此当您在另一个单元格上调用[cell.contentView addSubview:editButton]时,您很可能会遇到从子视图中删除按钮的情况。因此,按钮frame可能是正确的,但只是在表格中的另一个单元格中。

如果您发布完整的tableView:cellForRowAtIndexPath:以及创建按钮的位置,那么我可以帮您修复它。