Interface Builder不断重新设置我的自定义UITableViewCell的宽度

我正在使用Interface Builder 为iPad应用程序设计自定义的UITableViewCell。

我有一个专用的XIB文件,它有一个UITableViewCell作为它的根视图。 我能够将UITableViewCell的宽度更改为1024(在XCode的右侧属性窗格中的“大小”检查器中),并且这样可以暂时调整画布上的单元格大小。

然而,如果事后我尝试移动/调整UITableViewCell中的特定项目或关闭并重新打开XIB,则XCode决定将UITableViewCell的宽度重置为320(iPhone特定宽度)。

画布上的单元格会遮蔽单元格内的项目,并使得设计单元格变得不可能,除非我再次调整单元格大小。 一旦你绕过这个循环几次,它会变得相当烦人。

任何人都知道我可以如何设置宽度,使其永久性或如何指定UITableViewCell是iPad特定的?


要重新创建...

  • 文件>新建>文件...
  • UserInterface>空
  • 设备系列== iPad

  • 将新的UITableViewCell拖动到画布上(其宽度为320,尽管之前选择了iPad)

  • 将UITableViewCell的宽度调整为1024(到目前为止都是好的)
  • 将UILabel拖放到UITableViewCell的左侧(仍然不错)
  • 以任何方式拖动角落(不要使用属性检查器)来调整UILabel的大小 - 并且...将UITableViewCell的大小重置为320

  • 编辑:

    我刚刚收到苹果公司对我之前创建的雷达票的以下回复...

    你好,奥利弗,

    这是关于Bug ID#13222753的后续行动。

    工程部门要求提供以下信息以进一步调查此问题:

    我们相信这个问题已经在最新的Xcode 5.1种子中得到解决。

    这是针对Mac,iPhone和iPad的Xcode开发人员工具集的预发布版本。 它包括Xcode IDE,iOS Simulator以及用于构建OS X和iOS应用程序的所有必需工具和框架。 请使用此版本进行测试,并使用结果更新错误报告。

    Xcode 5.1种子 - 构建5B71f发布日期:2013年12月13日

    我也试图在Xcode 5.0.2中重新创建这个问题,并且它看起来像修复了这个版本。


    我不知道你是否认为这是一个有效的答案,但是当我在IB中使用自动布局时,问题似乎只发生在我身上。 如果我把它关掉,调整UITableViewCell大小的Xcode的问题就会消失。

    要关闭自动布局 ,只需选择的UITableViewCell,然后在“文件检查器”右边,有一个自动版式复选框,将其关闭。


    解决方法是不要将表格视图单元格添加到您的笔尖。 相反,使用常规视图来包含您的子视图。

    创建一个自定义UITableViewCell类,用于加载笔尖并将顶级笔尖视图设置为单元格内容视图的子视图:

    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
    {
        self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    
        if (self) {
            UINib *nib = [UINib nibWithNibName:@"YourNibName" bundle:nil];
            UIView* containerView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];
            containerView.translatesAutoresizingMaskIntoConstraints = NO
            [self.contentView addSubview:containerView];
    
            NSDictionary *views = NSDictionaryOfVariableBindings(containerView);
            [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[containerView]|" options:0 metrics:nil views:views]];
            [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[containerView]|" options:0 metrics:nil views:views]];
        }
    
        return self;
    }
    

    用表格视图注册您的课程:

    [tableView registerClass:YourCellClass forCellReuseIdentifier:@"YourCellID"]`
    

    我只是做了一个测试,并没有任何问题调整细胞。 它确实没有什么区别,如果Xib是用'for iPhone'或'for iPad'选项创建的。 所以,这按预期工作。

    诀窍是,不要拖拽大小,而是使用Inspector来改变宽度 - 这会使单元格大小为1024。

    链接地址: http://www.djcxy.com/p/24407.html

    上一篇: Interface Builder keeps resetting the width of my custom UITableViewCell

    下一篇: Remove autolayout (constraints) in Interface Builder