I'm Working in Swift 4 and i'm facing problems in UITableViewCell
. I need 5 different types of cells so I have make a .xib file and create 5 cells. But when register nib in TableViewController class with same xib and different Cell identifier.. its crashing:
Error:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'invalid nib registered for identifier (IntakeFormTextFieldCell) - nib must contain exactly one top level object which must be a UITableViewCell instance
My code is:
override func viewDidLoad() {
super.viewDidLoad()
intakeFormTableView.register(UINib(nibName: "IntakeFormViews", bundle: nil), forCellReuseIdentifier: "IntakeFormTextFieldCell")
intakeFormTableView.register(UINib(nibName: "IntakeFormViews", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell")
// Do any additional setup after loading the view.
}
My rough xib file is:
My Question is how can I use different cells from one xib file? Is there any easy and good practice way for this?
You can't create multiple custom cells on One xib. You need to create 5 different Xib's for 5 different cells. It's also easy for you to understand the code flow.
override func viewDidLoad() {
super.viewDidLoad()
intakeFormTableView.register(UINib(nibName: "IntakeFormViews1", bundle: nil), forCellReuseIdentifier: "IntakeFormTextFieldCell1")
intakeFormTableView.register(UINib(nibName: "IntakeFormViews2", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell2")
intakeFormTableView.register(UINib(nibName: "IntakeFormViews3", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell3")
intakeFormTableView.register(UINib(nibName: "IntakeFormViews4", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell4")
intakeFormTableView.register(UINib(nibName: "IntakeFormViews5", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell5")
// Do any additional setup after loading the view.
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With