如何在 .xib 文件中使用自定义 UITableView 和 UITableViewCell?

Posted

技术标签:

【中文标题】如何在 .xib 文件中使用自定义 UITableView 和 UITableViewCell?【英文标题】:How to use a custom UITableView and UITableViewCell inside a .xib file? 【发布时间】:2016-05-20 01:59:16 【问题描述】:

我正在创建几张卡片,其中包含要显示的信息。每张卡片都将用UIView 表示,所以我在不同的.xib 文件中创建每张卡片。 我的一张卡包含自定义UITableView 和单元格,这些单元格将使用UITableViewDataSourceUITableViewDelegate 协议进行加载和管理。

但是,当我搜索 Table View 组件并将其拖到我的 .xib 文件时,它会加载一个我无法自定义的预定义 UITableView。 我对使用单独的 .xib 文件很陌生(我一直在使用情节提要),所以我不知道如何在这种情况下自定义我的 TableView,因此我们将不胜感激。

【问题讨论】:

对于任何想知道发生了什么的人,我使用 Fonix 和 Prashant 的答案让它工作,因为我无法让它们单独工作。如果有人需要任何见解,我可以发布我的方法。 【参考方案1】:

Xibs 没有故事板中的 tableviewcell 原型,不幸的是它是故事板唯一的功能。 Xib 有点过时,但仍有其用途。但是您可以在同一个 xib 文件中包含与 tableview 相同的不同单元格,它们将与 tableview 分开。

你会像加载 xib 一样

var objects: NSArray?;
NSBundle.mainBundle().loadNibNamed("MyTableView", owner: self, topLevelObjects: &objects)

然后在数组中,根据 xib 中元素的顺序,您将获得 xib 中所有元素的数组。所以可能在位置 0 将是您的表格视图,然后 1 将是一个单元格,2 一个单元格等.. 取决于您有多少。不过,您可能只会加载cellForRowAtIndexPath: 中的单元格,而表格将位于viewDidLoad 或其他地方

【讨论】:

【参考方案2】:

制作一个tableview并创建一个tableview实例。 在 viewdidload 中编写此代码... self.tableView.registerNib(UINib(nibName: "PackageDetailTVCell", bundle: nil), forCellReuseIdentifier: "Cell")

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 返回 self.arrayDict.count

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! PackageDetailTVCell

    let dict = self.arrayDict[indexPath.row]
    cell.labelOfferPrice.text = (dict .objectForKey("offer_price") as! String)
    cell.labelName.text = (dict .objectForKey("title") as! String)
    cell.labelRegularPrice.text = (dict .objectForKey("price") as! String)


    return cell

【讨论】:

以上是关于如何在 .xib 文件中使用自定义 UITableView 和 UITableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .xib 文件中使用自定义 UITableView 和 UITableViewCell?

如何在 iOS 中使用文件 xib 自定义键盘

如何在已经是 NIB 的 UICollectionViewCell 中加载带有自定义单元格的 UITable

如何使用 xib 文件自动布局宽度自定义 UITableViewCell

如何将 xib 文件加载为自定义类?

如何继承具有 .xib 文件的自定义视图