ios - 在不使用 uitableviewcontroller 的情况下子类化 uitableview 单元

标签 ios objective-c uitableview

我正在尝试子类化 uitableviewcell。

起初我使用 uitableviewcontroller 没问题,一切正常

嗯。问题是我无法在 uitableview 的顶部插入静态 View 。所以我

开始使用uiview + uitableview。我将委托(delegate)和数据源设置为我的 uitable

但是当我尝试编译我的解决方案时,我得到了这个错误:

2015-03-04 15:00:53.087 News[7410:750801] *** Assertion failure in -[SubcategoryTableViewCell _setHostsLayoutEngine:], /SourceCache/UIKit/UIKit-3318.16.14/NSLayoutConstraint_UIKitAdditions.m:2760
2015-03-04 15:00:58.132 News[7410:750801] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Must translate autoresizing mask into constraints to have _setHostsLayoutEngine:YES.'
*** First throw call stack:
(0x182b59e48 0x19324c0e4 0x182b59d08 0x1839dd554 0x1873d6088 0x1873df4f0 0x1876f3c60 0x18771475c 0x1877eccc8 0x1877ecc68 0x1877ec984 0x1875c96f8 0x187832244 0x1877eccc8 0x1877ecc68 0x1877ec984 0x1875c96f8 0x1876f3c44 0x18771475c 0x1877eccc8 0x1877ec984 0x187714264 0x1877eccc8 0x1877ecc68 0x1877ec984 0x1877136ec 0x187446cac 0x1000292e8 0x187421854 0x1873e369c 0x1873e58f0 0x1873e582c 0x1873e5178 0x10003ad30 0x100344e30 0x100344df0 0x10034975c 0x182b116a0 0x182b0f748 0x182a3d1f4 0x18bbd35a4 0x18736e784 0x100029bf4 0x1938baa08)
libc++abi.dylib: terminating with uncaught exception of type NSException

关于这部分代码:

- (SubcategoryTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *reuseIdentifier = @"PlaceholderCell2";
    SubcategoryTableViewCell * sctvCell = [self.tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    if (sctvCell == nil) {
        sctvCell= [[SubcategoryTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]; 
    }

在 Storyboard 中,我将 uitableviewcell 设置为我的单元格客户类。并且有效

与 uitableview Controller 完美结合。

这是我的类和子类代码:

weird behavior on dynamic uitableviewcell height

最佳答案

well. the problem was i couldnt insert static view top of uitableview.

有几种解决方法。

  1. 将静态 View 放在窗口 ([self.tableView.window addSubview:staticView])。在 TableView Controller 消失之前,您需要管理静态 View 的删除。

  2. 有一个包含静态 View 的外部 View Controller 。外部 View Controller 在容器 View 中包含您的 TableView Controller 。


回到您当前的问题。当您将 TableView Controller 换成常规 View Controller 时,您是否重建了 Storyboard?简单地交换类型会导致错误。

关于ios - 在不使用 uitableviewcontroller 的情况下子类化 uitableview 单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28854198/

相关文章:

objective-c - 如何全局更改UIKit属性的默认值?

ios - UITableViewCell 不水平裁剪内容

ios - 何时使用 Categories Objective-C?

ios - 我可以在 watchkit 的 map 上添加按钮吗?

iphone - 自定义 UITableViewCell 子类 : This class is not a key value coding-compliant

ios - 在 Itunes 连接中上传构建后更改 Bundle ID

objective-c - MPVolumeView 和 iOS 5

ios - 从挂载 map 的数组中检索信息 (MapKit)

ios - 调整 UITableView Cell 上的 SubView 约束

ios 驻留菜单管理左右菜单内容