ios - get indexpath from collectionView, sometime get the wrong indexPath -


in uitableview can use code indexpath uitableview

extension uiview{     func getbuttonindexpath(tableview:uitableview) -> nsindexpath{             let buttonoriginintableview = self.convertpoint(cgpointzero, toview: tableview)             return tableview.indexpathforrowatpoint(buttonoriginintableview)!         } } 

but doesn't work in uicollectionview

extension uiview{     func getindexpath(uc:uicollectionview) -> nsindexpath?{         let senderp = cgpointmake(0, self.frame.height / 2)             let point : cgpoint = self.convertpoint(senderp, toview:uc)             let ind = uc.indexpathforitematpoint(point)             print("what click is", point, ind)         return ind } 

i put in button of cell in uicollectionview

delbtn.addtarget(self, action: #selector(favviewcontroller.delfavaction(_:)), forcontrolevents: .touchupinside) 

and function

    func delfavaction(sender:uibutton){     guard let indexpath = sender.getindexpath(self.collectionview) else {     return     }     print(indexpath) } 

but wrong indexpath.item, how happening?

is code?

func collectionview(collectionview: uicollectionview, layout collectionviewlayout: uicollectionviewlayout, sizeforitematindexpath indexpath: nsindexpath) -> cgsize {     return rectarr[indexpath.item].size } 

you write line:

delbtn.addtarget(self, action: #selector(favviewcontroller.delfavaction(_:)), forcontrolevents: .touchupinside) 

below write other line:

delbtn.tag = indexpath.item; 

and item:

func delfavaction(sender:uibutton){ //        sender.tag convert uibutton; //  objectvie c write: uibutton *btn = (uibutton *)sender; } 

Comments

Popular posts from this blog

PySide and Qt Properties: Connecting signals from Python to QML -

c# - DevExpress.Wpf.Grid.InfiniteGridSizeException was unhandled -

scala - 'wrong top statement declaration' when using slick in IntelliJ -