ios - Remove header and corresponding cells from UI in UITableView -
how can header , whole section removed tableview "edit" ui? know possible in code tableview.deletesections()
, need user able when taps "edit" button.
here explanation:
i'm using swift 2.
let's start defining custom subclass of uitableviewheaderfooterview
. class used display headers in out table view.
class headerview : uitableviewheaderfooterview { var actionhandlerblock: (void -> void)?; override init(reuseidentifier: string?) { super.init(reuseidentifier: reuseidentifier) let button = headerview.setupbutton() addsubview(button); } required init?(coder adecoder: nscoder) { super.init(coder: adecoder) let button = headerview.setupbutton() addsubview(button); } func removebuttontapped(sender: anyobject) { actionhandlerblock?(); } } private extension headerview { static func setupbutton() -> uibutton { let button = uibutton.init(); button.addtarget(self, action: "removebuttontapped:", forcontrolevents: .touchupinside) button.settitlecolor(uicolor.redcolor(), forstate: .normal) button.settitle("remove section", forstate: .normal) button.sizetofit() return button } }
this class simple. it's responsibility create header view 1 additional view - button used detect when user wants remove section of table view.
block actionhandlerblock
called every time user taps button in our header view.
in order remove section after user taps button in our header view have provide custom logic delegate of table view.
override func viewdidload() { super.viewdidload() tableview.registerclass(headerview.self, forheaderfooterviewreuseidentifier: "header") //rest of set code here } func tableview(tableview: uitableview, viewforheaderinsection section: int) -> uiview? { let header = tableview.dequeuereusableheaderfooterviewwithidentifier("header") as! headerview header.actionhandlerblock = { [section] in //don't forget remove section data source here tableview.deletesections(nsindexset(index: section), withrowanimation: .none) } return header } func tableview(tableview: uitableview, heightforheaderinsection section: int) -> cgfloat { return 50 }
in function tableview:viewforheaderinsection:
set actionhandlerblock
property of header view. remove section each time block called. remember modify data source of table view before call deletesections:
method - data source has know removal of section able return correct number of sections in numberofsectionsintableview:
function of data source.
Comments
Post a Comment