I am using Xib files instead of storyboard. I have created a table view with some dummy data. Its working fine, Now I have created a custom cell with some labels and textFields. How can I use it as header or footer of UITableView ?
How to set a custom cell as header or footer of UITableView
Asked Answered
you can not use UITableView cell as header or footer , for that you need to create one view (xib) and you can use it –
Disconsolate
cell as header? tableHeaderView is a type of view, not a cell –
Descendent
How to create a UiView with and Xib ? when i create a new CocoaTouch file and make it subclass of UIView the option of "Also create Xib file" is not check able –
Kirit
Duplicated with here #12557250 –
Wallsend
The answer is actually pretty simple.
In viewForHeaderInSection()
create cell object as you do in cellForRowAtIndexPath()
and return it.
Here is sample code.
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell = tableView.dequeueReusableCellWithIdentifier("cellIdentifier") as! YourTableViewCell
return cell
}
You can set height for header as:
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 80
}
Update for Swift 4.2
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier") as! YourTableViewCell
return cell
}
and
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 80
}
Adding Tableview cell is not a good solution #15611874 –
Toul
You can create a custom view programmatically. I tried the following code. Try it once.
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let customview:UIView = UIView();
let label = UILabel();
label.text = "ur custom data"
/*
You can add any number of subviews you want here
And don't forget to add it to your customview.
*/
customview.addSubview(label)
return customview;
}
similarly you can do the same thing for header also.
This is the Method add the Header of TableView: In that you can any controls Like UIButton,UIImageView,....etc.
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let sectionView = UIView()
sectionView.frame = CGRectMake(x,y,height,width) // For Set the Frame
sectionView.backgroundColor = UIColor.redColor()
return sectionView
}
func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let sectionView = UIView()
sectionView.frame = CGRectMake(x,y,height,width) // For Set the Frame
sectionView.backgroundColor = UIColor.redColor()
return sectionView
}
Like Above you can set the Footer of Section and You can add the size of the header And footer
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 20.0
}
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 20.0
}
Swift 4.0
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let sectionView = UIView()
sectionView.frame = CGRect(x: x, y: y, width: width, height: height)// For Set the Frame
sectionView.backgroundColor = UIColor.red
return sectionView
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let sectionView = UIView()
sectionView.frame = CGRect(x: x, y: y, width: width, height: height)// For Set the Frame
sectionView.backgroundColor = UIColor.red
return sectionView
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 20.0
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 20.0
}
I have created a cstom view which contains an imageView. When i try to use this method with a simple view wotha nackground color it works but not with my custom view –
Kirit
© 2022 - 2024 — McMap. All rights reserved.