在编辑模式下更改UITableViewCell中红色减号按钮的位置

时间:2014-01-13 15:15:23

标签: ios objective-c uitableview ios7

此代码在iOS 5和6上的UITableViewCell子类中运行良好:

if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellEditControl"]) {
        CGRect newFrame = subview.frame;
        //Use your desired x value
        newFrame.origin.x = 280;
        subview.frame = newFrame;    
}

在iOS 7上调试我的应用时,我发现上面的所有子视图都被称为UITableViewCellContentView,并且无法知道UITableViewCellEditControl子视图的位置。

是否有更好的解决方案来执行上述操作?

1 个答案:

答案 0 :(得分:1)

调试时我发现iOS 7中的所有子视图现在都被称为“UITableViewCellEditControl”。我尝试记录所有子视图子视图,发现UITableViewCellEditControl现在是子视图的子视图。这是一个丑陋的临时解决方案:

for (UIView *subview in self.subviews)
    {
        if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellEditControl"]) {
            CGRect newFrame = subview.frame;
            newFrame.origin.x = 280;
            subview.frame = newFrame;
        }
        else
        {
            if(IS_OS_7_OR_LATER)
            {
                for(UIView *subsubview in subview.subviews)
                {
                    if ([NSStringFromClass([subsubview class]) isEqualToString:@"UITableViewCellEditControl"]) {
                        CGRect newFrame = subsubview.frame;
                        newFrame.origin.x = 280;
                        subsubview.frame = newFrame;
                    }
                }
            }
        }