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

时间:2016-05-20 01:59:17

标签: ios xcode swift uitableview xib

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

然而,当我搜索Table View组件并将其拖到我的.xib文件时,它会加载一个我无法自定义的预定义UITableView。 我很擅长使用单独的.xib文件(我一直在使用故事板)所以我不知道如何在这种情况下自定义我的TableView,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

Xibs没有像故事板那样的tableviewcell原型,不幸的是它只是一个故事板。 Xibs有点陈旧,但仍有其目的。但是你可以在同一个xib文件中拥有与tableview不同的单元格,它们只是与tableview分开。

你会像

那样加载xib
var objects: NSArray?;
NSBundle.mainBundle().loadNibNamed("MyTableView", owner: self, topLevelObjects: &objects)

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

答案 1 :(得分:0)

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

func tableView(tableView:UITableView,numberOfRowsInSection section:Int) - > INT {         return 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
}