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:

image.

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

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

css - Make div keyboard-scrollable in jQuery Mobile? -

ruby on rails - Seeing duplicate requests handled with Unicorn -