0

我一直在尝试使用 UIScrollView 制作自定义 UITableViewCell。我有一个 .xib,其中包含一个 UITableViewCell(仅包含一个 UIScrollView)和一个 UIView,它是单元格的 scrollView 的内容视图。

好的,现在这是应该显示自定义单元格的 UITableView 的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [self.tableView registerNib:[UINib nibWithNibName:@"RecessCell" bundle:nil] forCellReuseIdentifier:@"Recess"];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
        RecessCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Recess"];
        return cell;
}

RecessCell 类的标题:

#import <UIKit/UIKit.h>

@interface RecessCell : UITableViewCell

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (strong, nonatomic) IBOutlet UIView *contentView;
@end

scrollView 是每个单元格内 UIScrollView 的出口。contentView 是 UIScrollView 的内容视图的出口。

好吧,到目前为止,一切似乎都是合法的,但是当我运行该应用程序时:

*由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合关键内容视图的关键值编码。”

我已经阅读了大量有关该运行时错误的信息,我能找到的只是:

  • 我需要验证 contentView 实际上是在标题中声明的。(如您所见,它在那里声明)

  • 我需要在 cellForRow 中将 UITableViewCell 更改为 RecessCell,我这样做了。

我该如何解决这个问题?创建自定义 UITableViewCells 这么难吗?

4

1 回答 1

1

您不应该在头文件中创建另一个名为 contentView 的插座。UITableViewCell 已经有一个名为 contentView 的属性。

此外,如果您正在创建带有 UITableVieCell 的 .xib 并且您正在向 UITableViewCell 添加视图,则视图将被添加到内容视图中。因此,您需要进入您的 .xib 文件并删除链接到您的 contentView IBOutlet 的视图之间的链接。(您也可以删除该视图,但要小心,以免删除子视图)

于 2013-05-18T08:07:51.777 回答