3 回答
TA贡献1808条经验 获得超4个赞
使用Swift 5和iOS 12.2,您应该尝试以下代码来解决您的问题:
CustomCell.swift
import UIKitclass CustomCell: UITableViewCell {
// Link those IBOutlets with the UILabels in your .XIB file @IBOutlet weak var middleLabel: UILabel!
@IBOutlet weak var leftLabel: UILabel!
@IBOutlet weak var rightLabel: UILabel!}TableViewController.swift
import UIKitclass TableViewController: UITableViewController {
let items = ["Item 1", "Item2", "Item3", "Item4"]
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: "CustomCell")
}
// MARK: - UITableViewDataSource
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.middleLabel.text = items[indexPath.row]
cell.leftLabel.text = items[indexPath.row]
cell.rightLabel.text = items[indexPath.row]
return cell
}}下图显示了一组使用提供的代码的约束,而没有来自Xcode的任何约束歧义消息:
TA贡献2080条经验 获得超4个赞
这是我使用Swift 2和Xcode 7.3的方法。此示例将使用单个ViewController加载两个.xib文件 - 一个用于UITableView,另一个用于UITableCellView。
对于此示例,您可以将UITableView权限放入空的TableNib .xib文件中。在里面,将文件的所有者设置为ViewController类,并使用插座引用tableView。
和
现在,在视图控制器中,您可以像往常一样委托tableView,就像这样
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
...
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// Table view delegate self.tableView.delegate = self
self.tableView.dataSource = self
...要再次创建自定义单元格,请将Table View Cell对象拖放到空的TableCellNib .xib文件中。这次,在单元格.xib文件中,您不必指定“所有者”,但您需要指定自定义类和标识符,如“TableCellId”
使用您需要的任何插件创建您的子类
class TableCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!}最后......回到View Controller中,您可以加载并显示整个事物
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// First load table nib let bundle = NSBundle(forClass: self.dynamicType)
let tableNib = UINib(nibName: "TableNib", bundle: bundle)
let tableNibView = tableNib.instantiateWithOwner(self, options: nil)[0] as! UIView
// Then delegate the TableView self.tableView.delegate = self
self.tableView.dataSource = self
// Set resizable table bounds self.tableView.frame = self.view.bounds
self.tableView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
// Register table cell class from nib let cellNib = UINib(nibName: "TableCellNib", bundle: bundle)
self.tableView.registerNib(cellNib, forCellReuseIdentifier: self.tableCellId)
// Display table with custom cells self.view.addSubview(tableNibView)}代码显示了如何简单地加载和显示nib文件(表),以及如何注册nib以供单元使用。
希望这可以帮助!!!
TA贡献1864条经验 获得超2个赞
斯威夫特4
注册Nib
tblMissions.register(UINib(nibName: "MissionCell", bundle: nil), forCellReuseIdentifier: "MissionCell")
在TableView DataSource中
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "MissionCell", for: indexPath) as? MissionCell else { return UITableViewCell() }
return cell
}- 3 回答
- 0 关注
- 1115 浏览
添加回答
举报
