ios - Sync Checkmarks Between UISearchController and FetchRequest -
i'm trying sync accessorytype.checkmark between search view , non-search view. i've tried setting cell.accessorytype = .none in few different spots on cellforrowatindexpath, yet keep getting random checkmarks when switch between fetchedresults , search results. don't know i'm screwing up, rest assured it'll startlingly stupid.
i have uitableviewcontroller that's set up. when loads, have configured display items nsfetchrequest. works perfectly.
i have uisearchcontroller that's set up. works , displays results want.
i encounter problem of random checkmarks appearing when toggle between search , fetchrequest. array of stuff save working , right items in there---it's checkmarks getting ****ed up. feedback appreciated. i'm out of ideas.
here relevant properties i've got declared before viewdidload in uitableviewcontroller class:
// create array dump fetchresults var unfilteredjingles = [jingle]() // create array store filtered search results var filteredjingles = [jingle]() // array ones want save added/removed var jinglestosave = [jingle]() // resultssearchcontroller var resultssearchcontroller = uisearchcontroller() when cells selected, have didselectrowatindexpath configured 2 things:
1) append jinglestosave cell array , place checkmark next cell. works.
2) remove jinglestosave cell jinglestosave array. works, too.
the issue i'm encountering random cells getting checked when switch between searchresultscontroller.active , searchresultscontroller not active. correct cells staying checked, random ones checked.
here's cellforrowatindexpath:
override func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell { let cell = tableview.dequeuereusablecellwithidentifier("jinglecell", forindexpath: indexpath) // instantiate local array , assign filtered/unfiltered results based on whether // resultssearchcontroller active var jinglearray = [jingle]() if resultssearchcontroller.active { // set local array filtered array jinglearray = filteredjingles let jingle = jinglearray[indexpath.row] // set labels cell cell.textlabel?.text = jingle.jingledescription cell.detailtextlabel?.text = jingle.jinglestar } else { // set local array un-filtered array jinglearray = unfilteredjingles // jingle index let jingle = jinglearray[indexpath.row] // set labels cell cell.textlabel?.text = jingle.jingledescription cell.detailtextlabel?.text = jingle.jinglestar } // set checkmarks if self.jinglestosave.count > 0 { // enumerate jinglestosave... (indexofjinglestosave, jingletosave) in jinglestosave.enumerate() { // if object in array of stuff save matches object in index of tableview if jinglearray[indexpath.row].hashvalue == jinglestosave[indexofjinglestosave].hashvalue { // set accessoryview checkmark cell.accessorytype = .checkmark } } } return cell }
reset cells checkmark state default state (im guessing no checkmark) after dequeue cell. cell recycling issue checkmarks appearing on cells shouldnt on.
Comments
Post a Comment