从XIB文件中将UITableViewCell作为UIView使用

6

我在XIB中有一个名为CustomTableViewClass的自定义表格视图类,需要将其添加到UITableView中,方法如下:

class RestaurantsTableView: UITableView {
    override func awakeFromNib() {
        self.register(UINib(nibName: "RestaurantTableViewCell", bundle: nil), forCellReuseIdentifier: "restaurantCell")
    }
}

一切正常,现在我想在其他一些UIViewController中将此CustomTableViewClass用作UIView,但我不知道如何正确地重写其init(coder aCoder: NSCoder)函数,因为在UITableView的情况下我不需要它,而且当我像其他自定义XIB视图一样实现它时,会崩溃并出现nil

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    let _ = Bundle.main.loadNibNamed("RestaurantTableViewCell", owner: self, options: nil)?[0] as! UIView
}

你在storyBoard中分配了CustomTableViewClass类吗? - KKRocks
2个回答

20

有一种方法可以使用UITableViewCellcontentView属性,其类型为UIView。因此,只需像以前从nib获取RestaurantTableViewCell一样获取它,然后使用其contentView从中获取UIView

let cell = Bundle.main.loadNibNamed("RestaurantTableViewCell", owner: self, options: nil)?[0] as! RestaurantTableViewCell
let yourView = cell.contentView

2

尝试这段代码:

    var views:NSArray = NSBundle.mainBundle().loadNibNamed("Your_Xib_file", owner: self, options: nil);
    var yourView:UIView = views.objectAtIndex(0) as! UIView;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接