Notifying view controller of changes to any of five types of models
The type annotation in

if let listTableViewController: listTableViewController&lt;ModelA&gt; = pages[currentIndex].viewController as? listTableViewController&lt;ModelA&gt;


is not needed because the type is automatically inferred from the
expression on the right-hand side:

if let listTableViewController = pages[currentIndex].viewController as? listTableViewController&lt;ModelA&gt;




According to the Swift API Design Guidelines


  Names of types and protocols are UpperCamelCase. Everything else is lowerCamelCase.


Therefore it should be func refreshList() and ListTableViewController.



To simplify your code, define a protocol for the common methods:

protocol RefreshController {
    func didRefreshNodesList()
    // ...
}


and make ListTableViewController conform to that protocol.
Then you can reduce it to a single test

if let refreshController = pages[currentIndex].viewController as? RefreshController {
    refreshController.didRefreshNodesList()
}