从框架加载自定义单元 xib
Load a custom cell xib from a framework
我正在开发一个 cocoa 框架,为托管应用程序提供一个 UINavigationController 和一个带有自定义单元格的 UITableViewController。
我设法将带有 UIViewControllers 的 UINavigationController 作为根视图传递给托管应用程序,在导航控制器的 didLoad 中使用:
NSBundle* frameworkBundle = [NSBundle bundleForClass:[self class]];
ContactsListVC *v = [[ContactsListVC alloc]
initWithNibName:@"ContactsListVC"
bundle:frameworkBundle];
[self addChildViewController: v];
但我不知道如何将自定义单元格加载到表格视图中,给我一个错误:'unable to dequeue a cell with identifier ContactCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'。
我做到了。
在 UITableViewController 的 .m 中
-(void)viewDidLoad {
[super viewDidLoad];
NSBundle *frameworkBundle = [NSBundle bundleForClass:[self class]];
UINib *nib = [UINib nibWithNibName:CONTACTCELL bundle:frameworkBundle];
[[self tableView] registerNib:nib forCellReuseIdentifier:CONTACTCELL];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:CONTACTCELL forIndexPath:indexPath];
//other stuff....
return cell;
}
我正在开发一个 cocoa 框架,为托管应用程序提供一个 UINavigationController 和一个带有自定义单元格的 UITableViewController。
我设法将带有 UIViewControllers 的 UINavigationController 作为根视图传递给托管应用程序,在导航控制器的 didLoad 中使用:
NSBundle* frameworkBundle = [NSBundle bundleForClass:[self class]];
ContactsListVC *v = [[ContactsListVC alloc]
initWithNibName:@"ContactsListVC"
bundle:frameworkBundle];
[self addChildViewController: v];
但我不知道如何将自定义单元格加载到表格视图中,给我一个错误:'unable to dequeue a cell with identifier ContactCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'。
我做到了。
在 UITableViewController 的 .m 中
-(void)viewDidLoad {
[super viewDidLoad];
NSBundle *frameworkBundle = [NSBundle bundleForClass:[self class]];
UINib *nib = [UINib nibWithNibName:CONTACTCELL bundle:frameworkBundle];
[[self tableView] registerNib:nib forCellReuseIdentifier:CONTACTCELL];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:CONTACTCELL forIndexPath:indexPath];
//other stuff....
return cell;
}