使用XIB自定义UITableViewCell

时间:2015-01-16 20:59:49

标签: ios objective-c uitableview interface-builder

我环顾四周,有很多关于如何做到这一点的例子,但我仍然没有得到它。

我有一个列表,我列出了日记帐分录,我想要显示标题,创建日期和其他一些东西。我想使用XIB来设计一个单元格,因此UX设计师可以修改它并按像素推动它。

所以,这就是我设置xib的方式: enter image description here

然后我创建了一个这个xib单元指向的类,并为其添加了两个属性:

@property (atomic, weak) IBOutlet UILabel* titleLabel;
@property (atomic, weak) IBOutlet UILabel* dateLabel;

我希望能够在创建这些单元格时设置它们。

在包含列表表的视图中,我执行此操作: 在 - (void)viewDidLoad

[self.tableView registerNib:[UINib nibWithNibName:@"DreamListTableViewCell" bundle:nil] forCellReuseIdentifier:@"DreamListCell"];

并且 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath我这样做:

static NSString *MyIdentifier = @"DreamListCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier forIndexPath:indexPath];

问题是,如果我在单元格xib中设置了IBOutlets,应用程序会崩溃,因为我认为所有者在初始化时确实是零,但我实际上并不确定。如果我无法在界面构建器中连接它们,我怎么能修改这两个属性?我该怎么办?

另外,我没有使用故事板。我使用此作为指南:Chapter 21. Table Views and Collection Views

我为一些重复的问题道歉,我只是没有得到它。 HALP!

编辑: 插座截图: enter image description here

编辑#2: 如果我删除单元格xib中的插座连接,我会看到: enter image description here

1 个答案:

答案 0 :(得分:6)

不要使用File的所有者来设置与IBOutlets的关系。更改单元格的类并使用它(在某些Xcode版本上建立连接可能很棘手,但是可行)。