Thank you for your answer. In the end, I did pretty much what you suggested - I took an entirely different approach and let each controller control only its own view/subviews. Instead of trying to call a method in one controller from another, I used a global variable to represent the position I wanted the subview in the other controller to be at, and used .willLayoutSubviews() in the target controller to refer to the global variable and position its own subview. It works like a charm and doesn't violate the controller-view paradigm. The only "bad" thing may solution does is rely on a global variable for communication between objects. But, I had to get it done somehow and, like I said, it works like a charm. Thank you again for your answer. Please consider this issue closed. Wil