简体   繁体   中英

UITableViewCell as UIView from XIB

I have CustomTableViewClass in XIB, adding it to UITableView like

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

and everything works fine, now I would like to use this CustomTableViewClass as UIView in some other UIViewController , but I do not get how to properly override its init(coder aCoder: NSCoder) function, cause I do not need one for UITableView case and when I implement it like I do for other custom XIB views it crashes with nil

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

There is one way you can use contentView property of UITableViewCell which of type UIView . So simply get RestaurantTableViewCell as you previously getting from nib then use its contentView to get the UIView from it.

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

Try this code :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM