Start by overriding preferredFocusedView in your viewController with a custom property:
var myPreferredFocusedView:UIView? override var preferredFocusedView: UIView? { return myPreferredFocusedView:UIView }
Then, in the button myPreferredFocusedView set myPreferredFocusedView to the next preferred button, which should get focus. After that, directly request a focus update:
func buttonCallback(){ myPreferredFocusedView = button2
This should update the focus system to another button.
source share