我正在制作一个自定义ui表视图单元格。我知道我可以使用loadNibNamed
方法来使用.xib
但是当我的数据太多时,这会导致滚动速度变慢。
我想使用UI笔尖,因为它比加载自定义单元格loadNibNamed
文件的.xib
方法快很多。
static NSString *cellIdentifier = @"PostStreamCell";
PostStreamCell *cell= [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PostStreamCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
UINib *cellNib = [UINib nibWithNibName:@"MemberCell" bundle:nil];
[cell.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"MemberCell"];
}
cell.textlabel.text =@"xyzabc123";
我尝试在上面的“if”块中使用下面的代码,但未能使用它。任何帮助将不胜感激。
UINib *cellNib = [UINib nibWithNibName:@"PostStreamCell" bundle:nil];
[cell registerNib:cellNib forCellWithReuseIdentifier:@"PostStreamCell"];
答案 0 :(得分:2)
在viewDidLoad中使用以下行:
[self.tableView registerNib:[UINib nibWithNibName:@"Cell" bundle:nil] forCellReuseIdentifier:@"Cell"];
然后,在cellForRowAtIndexPath中,如果你想要一个来自笔尖的单元格,你可以将它出列:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
这会从笔尖创建一个新实例,或者使现有单元格出列。
答案 1 :(得分:1)
您只需要注册一次Xib,因此此regiserNib代码应该位于类文件的viewDidLoad方法中
UINib *cellNib = [UINib nibWithNibName:@"PostStreamCell" bundle:nil];
[self.tablview registerNib:cellNib forCellWithReuseIdentifier:@"PostStreamCell"];
然后在tableview的 cellForRowAtIndexPath 方法中
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"PostStreamCell";
PostStreamCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
cell.textlabel.text =@"xyzabc123";
}
这将在您需要时为您服务。
干杯
编辑以响应PostStreamCell错误*
请确保您的自定义UITableViewCell xib具有'PostStreamCell'标识符,您可以在IB的这一部分中设置该标识符
请注意xib是UITableViewCell对象。
更新 - 图片显示了检查与xib相关联的自定义类文件的位置
在IB的实用程序中,请确保您的自定义UITableViewCell使用您的自定义类文件PostStreamCell。请检查它们是否显示在IB的这一部分中。
同样在你的UIViewController类文件中,(你有UITableView方法等)确保
#import "PostStreamCell.h"