UITableView 和自定义 UITableViewCell 使用 .xib
Posted
技术标签:
【中文标题】UITableView 和自定义 UITableViewCell 使用 .xib【英文标题】:UITableView and custom UITableViewCell using .xib 【发布时间】:2017-04-01 08:23:52 【问题描述】:在我的应用程序中,我使用了一个使用 xib 文件的自定义 tableView 单元。我创建了 .xib 文件出口标签等到我的 TableViewCell 类
在我的 ViewController 中,我用来在表格视图中填充和显示单元格的代码如下:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let transaction = statementArray[indexPath.row]
let cell = Bundle.main.loadNibNamed("StatementCell", owner: self, options: nil)?.first as! StatementCell
cell.transAmount.text = String(transaction.transAmount)
cell.transDesc.text = transaction.transDesc
cell.transFees.text = String(transaction.transFees)
return cell
我知道 TableView 的工作方式是重用屏幕外的单元格。他们是我加载.xib并正确填充单元格的方式吗?还是我必须在我的代码中添加一些东西?
【问题讨论】:
使用 .xib 是否有特定原因?您可以在 Interface Builder 的同一个表格视图中创建多个单元格。 我使用的是 .xib,因为我将根据我拥有的数据使用不同的单元格 问题出在哪里?您可以在同一个表格视图中使用不同的 UI 元素、大小等创建任意数量的单元格。只需将单元格拖到表格视图中并分配一个标识符和(可选)一个类。这比使用额外的 .xib 方便得多。 @vadian 可能是 Xib 对于在多个 tableViews 中重用单元格更方便? @UmairAfzal 是的,在这种情况下,XIB 更方便,但问题似乎与多个表视图无关。 【参考方案1】:首先你需要用 UITableView 注册你的自定义单元格
yourTableView.register(UINib(nibName: "StatementCell", bundle: nil), forCellReuseIdentifier: "cellIdentifier")
那么在UITableView的Delegate方法cellForRowAt中你需要写
let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath) as! StatementCell
cell.textLabel?.text = "Sample Project"
return cell
现在您可以使用 cell.propertyName 访问您的 UITableViewCell 属性
您必须注意“cellIdentifier”和“forCellReuseIdentifier”的值必须相同。
【讨论】:
【参考方案2】:还有一件事是您需要在viewDidLoad
方法中注册您的类以重用标识符。
YourTable.registerclass(tablecell, forCellReuseIdentifier: "identifier"
并确保您已连接所有必需的插座。
【讨论】:
那么这行代码基本上就是注册自定义cell类,以便复用cell? 是的,在我的代码中我也使用了....在应用它之前我遇到了几次崩溃,并且在使用它之后工作正常......【参考方案3】:首先在表格视图中注册自定义单元格 nibCalss
let str1 : NSString = "StatementCell"
tableView.register(UINib(nibName: "StatementCell", bundle: nil), forCellReuseIdentifier: str1 as String)
现在初始化tableviewcell
let cell1:StatementCell = tableView.dequeueReusableCell(withIdentifier: str1 as String) as! StatementCell!
现在访问 tableviewcell 插座集合。
【讨论】:
以上是关于UITableView 和自定义 UITableViewCell 使用 .xib的主要内容,如果未能解决你的问题,请参考以下文章
UIRefreshControl 带有两个异步 json 下载来填充 UITableView 行和自定义标题视图
在普通样式的 UITableView 中更改自定义 UITableViewCell 单元格的背景颜色
从两个 NSArrays 中包含的数据准备一个 NSDictionary 用于 UITableView