Does @IBSegueAction still not work for AppKit relationship segues from NSWindowController?

I’m working on a storyboard-based AppKit application that uses an NSWindowController containing an NSSplitViewController with multiple child view controllers.

The hierarchy is roughly:

NSWindowController
└── NSSplitViewController
    ├── NSViewController
    ├── NSViewController
    └── NSViewController

I am trying to provide dependencies during storyboard instantiation using either @IBSegueAction or instantiateInitialController(creator:), rather than configuring everything after initialisation.

What I attempted

I added custom initialisers to my view controllers so I can pass dependencies at creation time:

class SplitViewController: NSSplitViewController {
    let dependency: Dependency

    init?(coder: NSCoder, dependency: Dependency) {
        self.dependency = dependency
        super.init(coder: coder)
    }

    required init?(coder: NSCoder) {
        print("init(coder:) was called")
        fatalError("init(coder:) is not supported")
    }
}

I then attempted to intercept storyboard instantiation using @IBSegueAction, trying it in both the window controller and the split view controller:

@IBSegueAction
func makeSplitViewController(_ coder: NSCoder) -> NSSplitViewController? {
    SplitViewController(coder: coder, dependency: dependency)
}

I also tried attaching the segue action at different points in the storyboard, but the behaviour did not change.

Observed behaviour

Regardless of where I place the segue action, AppKit still appears to call:

required init?(coder: NSCoder)

This means my custom initialiser is never used for the split view controller or its children.

Background reference

I found this older known issue in the Xcode 11 release notes:

“A Segue Action on a relationship segue between a NSWindowController and a View Controller is currently not supported and ignored. (48252727)”

This suggests that, at least historically, AppKit relationship segues ignored segue actions entirely.

Has this limitation since been fixed in modern Xcode/macOS SDK releases, or are relationship segues involving NSWindowController still incompatible with @IBSegueAction?

More generally, what is the intended way to provide dependencies to an NSSplitViewController and its child view controllers in a storyboard-based AppKit application? I am also unclear whether instantiateInitialController(creator:) participates in the creation of container hierarchies like split view controllers, or only top-level controllers.

Thanks for the post and thanks for your patience.

What version of Xcode are you using? May I ask you to download the beta 1 version of Xcode 27 and verify if the issue has been resolved or you still having the same issue connecting the IBOutlets?

What the version Xcode that is not working the workaround of dragging from the outlets inspector remains effective?

Please let me know as much as you can about the Xcode version, macOS version as well if you can.

Thanks

Albert  WWDR

Thanks for the reply.

I should clarify that my issue is not with connecting IBOutlets. The outlets themselves are not the problem.

The issue is specifically with @IBSegueAction on AppKit storyboard relationship segues, in particular a relationship segue from an NSWindowController to an NSSplitViewController and then the split view controller’s relationship segues to its child view controllers.

In my current setup, the segue action is not called. AppKit appears to instantiate the controller using:

required init?(coder: NSCoder)

rather than the custom initialiser used by the @IBSegueAction.

I am currently using:

  • Xcode: Version 26.3 (17C529)
  • macOS: Sequoia 15.7.7 (24G720)
  • Deployment target: Monterey 12

I have not tested this in Xcode 27 beta 1. At the moment, I am trying to confirm whether the documented Xcode 11 limitation is still expected behaviour before installing a beta toolchain solely to check this case.

For reference, the older Xcode 11 release note I found says:

“A Segue Action on a relationship segue between a NSWindowController and a View Controller is currently not supported and ignored. (48252727)”

So I am trying to determine whether that limitation still applies to current AppKit storyboards.

Does @IBSegueAction still not work for AppKit relationship segues from NSWindowController?
 
 
Q