ios - Protocol not wroking from container -


i have viewcontroller 2 overlapping containerviews. , 1 of child views want change tab another.

enter image description here

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