ios - Why I can't call a method stored in parent UIViewController from embedded UITableViewController? -


i have parent ui view controller , has method responsible printing data console:

func printsomedata() {     print("printing data") } 

it has container embedded uitableviewcontroller. table has pull refresh functionality implemented , prints string when user pulls table:

func refresh(refreshcontrol: uirefreshcontrol) {     print("refreshing!!")     refreshcontrol.endrefreshing() } 

now want call printsomedata refresh method.

this try:

parent uiviewcontroller:

class mainmenu: uiviewcontroller, printing{      func printsomedata() {         print("some date")     }  } 

embedded uitableviewcontroller:

protocol printing{     func printsomedata() }  class mainmenutableviewcontroller: uitableviewcontroller {      var delegate: printing?      func refresh(refreshcontrol: uirefreshcontrol) {         print("refreshing!!")      if let _ = delegate{         delegate?.printsomedata()     }       refreshcontrol.endrefreshing() } 

but when pull table see refreshing!!, there no way see printing data. doing wrong?

where assigning delegate?

and write optional method call single line

delegate?.printsomedata() 

or that:

if self.delegate != nil {     self.delegate!.printsomedata() } 

inside mainmenu

override func viewdidload() {     super.viewdidload()      // tableviewcontroller placeholder `mainmenutableviewcontroller` reference     tableviewcontroller.delegate = self } 

if have understand correctly , mainmenu has containerview mainmenutableviewcontroller should solve problem:

class mainmenu: uiviewcontroller, printer {      func printsomedata() {         print("some date")     } }  protocol printer {      func printsomedata() }  class mainmenutableviewcontroller: uitableviewcontroller {      var printer: printer? {          guard let printer = self.parentviewcontroller as? printer else {              return nil         }         return printer     }      func refresh(refreshcontrol: uirefreshcontrol) {         print("refreshing!!")          printer?.printsomedata()          refreshcontrol.endrefreshing()     } } 

Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

python - pip wont install .WHL files -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -