我已经在网上阅读了很多关于如何创建自定义单元子类的教程,但我仍然有点困惑。当我尝试按照此问题中的说明进行操作时,我最终得到的错误是tableView不是ViewController对象的有效属性。
我创建了UITableViewCell
的新子类,名为CustomBookClass
。我已经使用CustomBookClass.h
文件连接了这些属性。
#import <UIKit/UIKit.h>
@interface CustomBookCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *bookImage;
@property (weak, nonatomic) IBOutlet UILabel *bookTitle;
@property (weak, nonatomic) IBOutlet UILabel *dateAdded;
@end
然后我进入我的ViewController.m
文件来编辑viewDidLoad
方法。
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView.delegate = self];
[self.tableView.dataSource=self];
[self.tableView registerClass:[CustomBookCell class]forCellReuseIdentifier:@"Custom
Cell"];
}
我在tableView上收到错误,说该属性不存在,即使在ViewController.h
文件中,我也包括表格视图。
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITableViewDelegate,
UITableViewDataSource>
@end
我确定我在这里遗漏了一些非常明显的东西,因为这是我第一次尝试这个。谁能帮我吗?谢谢!
答案 0 :(得分:0)
UIViewController
没有该属性。即使您将Delegate和DataSource协议分配给它。但是你可以做几件事。
ViewController
。这意味着,创建一个名为tableView
的商品/商店。UITableViewController
而非UIViewController
。两者都应该有用。
编辑:哦和行:
[self.tableView.delegate = self];
[self.tableView.dataSource=self];
没有意义。它们应该是:
self.tableView.delegate = self;
和self.tableView.dataSource = self;
[self.tableView setDelegate:self];
和[self.tableView setDataSource:self]
以1为首选。 (编辑:选项#2实际上是错误的代码,我的错。)
答案 1 :(得分:0)
无需在TableViewCell类
中设置委托和数据源简单制作一个属性并合成你的表视图项
@property (weak, nonatomic) IBOutlet UIImageView *bookImage;
@property (weak, nonatomic) IBOutlet UILabel *bookTitle;
@property (weak, nonatomic) IBOutlet UILabel *dateAdded;
现在在tableView控制器类中导入您的单元类
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableCell";
SimpleTableCell *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
//If you are using xib for representing your UI then add a nib file.
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.bookTitle.text = [tableData objectAtIndex:indexPath.row];
cell.bookImage.image = [UIImage imageNamed:[thumbnails objectAtIndex:indexPath.row]];
cell.dateAdded.text = [prepTime objectAtIndex:indexPath.row];
return cell;
}
有关详细信息,请查看此link