UITableView通过加载xib文件注册Cell的两种方法 - Apple Developer
本次加载方式的展示分为Objective-C与Swift方式,两种的使用方式都是差不多的;如果有不对的地方还信指正。
Objective-C中通过xib文件注册Cell的两种方法
1.如使用第一种方法进行xib Cell的注册,需要在xib的配置文件设置identifier与代码中的一致,否则每次都会创建新的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
OCTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"OCTableViewCell"];
if (!cell) {
cell = [[NSBundle mainBundle]loadNibNamed:@"OCTableViewCell" owner:self options:nil].firstObject;
}
cell.model = storeArr[indexPath.row];
return cell;
}
2. 如使用第二种方法进行registerNib配置,即可实现cell重用;无需在xib配置页面中设置identifier
⚠️:如果在xib配置页面设置了identifier,则必须与代码中的identifier保持一致性,不然使用过程会崩溃。提示:(reason: 'cell reuse indentifier in nib (OCTableViewCell1) does not match the identifier used to register the nib (OCTableViewCell1)')
// 注册 Cell
[self.tableView registerNib:[UINib nibWithNibName:@"OCTableViewCell" bundle:nil] forCellReuseIdentifier:@"OCTableViewCell"];
// Cell 实现
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
OCTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"OCTableViewCell"];
cell.model = storeArr[indexPath.row];
return cell;
}
Swift中通过xib文件注册Cell的两种方法
这里只是把Objective-C中的方法转为Swift中的
1.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier:"SwiftWorkTableViewCell") as? SwiftWorkTableViewCell
if cell == nil {
cell = Bundle.main.loadNibNamed("SwiftWorkTableViewCell", owner: self, options: nil)?.first as? SwiftWorkTableViewCell
}
cell?.model = storeArr[indexPath.row]
return cell!
}
2.
tableView.register(UINib(nibName: "SwiftTableViewCell", bundle: nil), forCellReuseIdentifier: "SwiftTableViewCell")
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "SwiftTableViewCell")
cell?.model = storeArr[indexPath.row];
return cell!;
}
先这么多,后续在添加
文章评论