ios - Protocol not wroking from container -
i have viewcontroller 2 overlapping containerviews. , 1 of child views want change tab another.
i created protocol:
protocol pickerdelegate { func changemaincontainer(index:int) } in child view:
class childviewincontainercontroller: uiviewcontroller, uipickerviewdelegate { var delegatestorepicker:storepickerdelegate? func pickerview(pickerview: uipickerview, didselectrow row: int, incomponent component: int) { self.delegatepicker?.changemaincontainer(0) } } in main view:
class mainviewcontroller: uiviewcontroller, storepickerdelegate { func changemaincontainer(index:int) { switch index { case 0 : self.container1.hidden = true self.container2.hidden = false case 1: self.container1.hidden = false self.container2.hidden = true default: break; } } } code works, changemaincontainer function not been called.
protocol: (notice changed protocol conforming class)
protocol pickerdelegate: class { func changemaincontainer(index:int) } childview: (changed delegate weak var)
class childviewincontainercontroller: uiviewcontroller, uipickerviewdelegate { weak var delegatestorepicker: pickerdelegate? } main view:
class mainviewcontroller: uiviewcontroller, pickerdelegate { // don't know how create view func createchild() { let controller = childviewincontainercontroller() controller.delegatestorepicker = self // own implementation } } making delegate weak prevents strong reference cycle.

Comments
Post a Comment