如何检测nib文件表视图单元格以制作ReusableCell?

时间:2016-11-02 19:51:38

标签: ios swift

我需要添加单元格标识符才能为tableView创建ReusableCell。但是,我在cell 属性表格视图分层中看不到任何tableView。如何在表视图中添加单元格。

注意:基本上我想创建一个Xib文件,该文件应包含tableViewtableView应该有自定义UiTableViewCell

enter image description here

代码在这里:

class SuggestNearTableViewCollectionViewCell: UICollectionViewCell , UITableViewDataSource,UITableViewDelegate{

    @IBOutlet weak  var suggestTableView : UITableView!


    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        self.suggestTableView.dataSource = self
        self.suggestTableView.delegate = self

        suggestTableView.register(UINib(nibName: "SuggestNearTableViewCell", bundle: nil), forCellReuseIdentifier: "SuggestNearTableViewCell")
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell  = tableView.dequeueReusableCell(withIdentifier: "SuggestNearTableViewCell", for: indexPath) as! SuggestNearTableViewCell
         return cell
    }

}

2 个答案:

答案 0 :(得分:0)

tableViewController中的viewDidLoad内,你应该像这样注册:

tableView.registerNib(UINib(nibName: "CustomOneCell", bundle: nil), forCellReuseIdentifier: "CustomCellOne")

cellForRowAtIndexPath内,只需声明单元格:

let cell: CustomOneCell = tableView.dequeueReusableCellWithIdentifier("CustomCellOne", forIndexPath: indexPath) as! CustomOneCell

如果你没有在tableViewController内进行,那么你必须连接你的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

        ...

答案 1 :(得分:0)

首先转到File->新的 - > Cocoa Touch Class并创建UIViewCOntroller类。相应地命名你的课程。

enter image description here

现在您将拥有一个Xib文件和一个Swift文件。 Xib看起来像这样。

enter image description here

现在在Xib上拖放一个UITableView并给它4针约束,如top = 0,bottom = 0,leadin = 0,trailing = 0。现在在新创建的swift文件中创建tableView的插座。同时连接数据源和委托。

现在再次转到File-> New-> Coucoa Touch Class和为UItableViewCell创建一个类也会创建一个如下所示的Xib文件。

enter image description here

现在你的单元格有一个Xib,你的单元格有一个swift文件。只需在此Xib中根据需要设计您的单元格。让我们说如果你想放一个imageView或标签等然后在自定义单元格的swift文件中创建所有组件的出口。现在将此函数添加到自定义单元格的swift文件中。

    class func cellForTableView(tableView: UITableView, atIndexPath indexPath: NSIndexPath) -> YourCustomTableViewCell {
    let kYourCustomTableViewCellIdentifier = "kYourCustomTableViewCellIdentifier"
    tableView.registerNib(UINib(nibName: "YourCustomTableViewCell", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: kYourCustomTableViewCellIdentifier)

    let cell = tableView.dequeueReusableCellWithIdentifier(kYourCustomTableViewCellIdentifier, forIndexPath: indexPath) as! YourCustomTableViewCell

    return cell
}

您的自定义单元格已准备就绪。

现在转到tableView的swift文件,在你的cellForRowAtIndexPath中使用如下所示的单元格。

let cell = YourCustomTableViewCell.cellForTableView(tableView, atIndexPath: indexPath)
cell.myImageView.image = "something"
// Do something with your cell

我希望它会有所帮助。如果您发现任何困难,请告诉我。