我在创建自定义tableview时遇到了一个有趣的问题......
我发现了这个question,但它并没有真正解决我的问题......
我试图将子类UIView放在子类UITableViewCell中。自定义视图包含UIButton和几个标签。简化,就像这样:
自定义视图和自定义tableviewcell都有xib。
MyCustomView.xib的类设置为MyCustomView,我有标签和按钮的属性以及按钮的IBAction。
MyCustomTableView.xib具有MyCustomView的属性,并且正在导入MyCustomView.h。
在MyCustomView.xib中,我有这个init:
-(id)initWithNibName:(NSString *)nibName nibBundle:(NSBundle *)nibBundle myLabelText:(NSString *)labelText {
//The custom view in the tableviewcell is 69 by 64...
if ((self = [super initWithFrame:CGRectMake(0, 0, 69, 64)])) {
[self setmyLabelText:labelText];
}
return self;
}
在我的TableViewController中......
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCustomTableViewCell *cell = (MyCustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"theCell" forIndexPath:indexPath];
// Configure the cell...
cell.customView = [[MyCustomView alloc] initWithNibName:@"MyCustomView" nibBundle:nil fileContentID:@"Some Text..."];
return cell;
}
当我运行应用程序时,自定义tableview单元格的内容很好,但自定义tableview单元格内的自定义视图的内容为空。
答案 0 :(得分:1)
似乎MyCustomView的初始化程序(-initWithNibName:nibBundle:myLabelText :)不加载任何xib。 这篇文章将对你有所帮助。
How to load a xib file in a UIView
... MyCustomView应该在MyCustomTableViewCell中创建一次,正如@rdelmar所说。
答案 1 :(得分:0)
你需要在MyCustomTableViewCell中完成大部分格式化工作 - 我不会使用XIB直接编写视图,因为该类被多次调用。 Apple有许多关于TableViewCells的示例代码 - 我相信其中一个称为Elements,它使用花式tableview单元格作为元素周期表。我的大多数应用程序都使用带有图标图像的自定义单元格,而且多年前我就开始使用该示例代码(自IOS 4起)。
您的CellForRowatIndexPath应该只是将图像和标签文本传递给tableviewCell类实例。如果你有问题,请问 - 但我确信来自apple的示例代码足以让你入门。