ios - How to exclude header from reloading when using reloadData in UICollectionView -


i have uicollectionview using csstickyheaderflowlayout mimic header behavior in uitableview. inside header there segmentedcontrol control data on uicollectionview. want reload data when tap segment (calling api) , perform reloaddata called

- (uicollectionreusableview *)collectionview:(uicollectionview *)collectionview viewforsupplementaryelementofkind:(nsstring *)kind atindexpath:(nsindexpath *)indexpath 

so best approach reload data not header, because when reloaddata header reload too, , segment first state.

here code viewforsupplementaryelementofkind

- (uicollectionreusableview *)collectionview:(uicollectionview *)collectionview viewforsupplementaryelementofkind:(nsstring *)kind atindexpath:(nsindexpath *)indexpath {  uicollectionreusableview *reusableview = nil;      if (kind == uicollectionelementkindsectionheader) {         segmentheaderview *collectionheader= [collectionview dequeuereusablesupplementaryviewofkind:kind withreuseidentifier:@"header" forindexpath:indexpath];         hmsegmentedcontrol *segmentedcontrol = [[hmsegmentedcontrol alloc] initwithsectiontitles:@[@"popular", @"lelang"]];         [segmentedcontrol setframe:cgrectmake(0, 0, self.view.frame.size.width, 45)];         [segmentedcontrol addtarget:self action:@selector(segmentedcontrolchangedvalue:) forcontrolevents:uicontroleventvaluechanged];         segmentedcontrol.backgroundcolor = [nconfig flatbuttongray];         segmentedcontrol.selectionindicatorcolor = [uicolor whitecolor];         segmentedcontrol.selectionindicatorboxopacity=1;         segmentedcontrol.titletextattributes = @{nsforegroundcolorattributename : [nconfig flatbuttonorange]};         segmentedcontrol.selectedtitletextattributes = @{nsforegroundcolorattributename : [nconfig flatbuttonorange]};         segmentedcontrol.selectionstyle = hmsegmentedcontrolselectionstylebox;         segmentedcontrol.selectedsegmentindex = hmsegmentedcontrolnosegment;         segmentedcontrol.selectionindicatorlocation = hmsegmentedcontrolselectionindicatorlocationnone;         segmentedcontrol.shouldanimateuserselection = no;         [segmentedcontrol setselectedsegmentindex:0 animated:yes];         [collectionheader addsubview:segmentedcontrol];         reusableview = collectionheader;      } return reusableview; } 

any advice? :)

your mistake store selection inside view layer can lost. should set property new selection index when user selects different segment. can react changed property reloading data. before return header view set selected segment index stored. way selection never lost.

in addition should avoid reloaddata , instead reload items changed.


Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -