You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从ViewController转场至Window Controller时PrepareForSegue未被调用

解决思路与方案

1. 确认Storyboard的Segue配置正确性

  • 打开Storyboard,选中目标Segue,在Attributes Inspector中:
    • 确保Identifier字段与代码中的"ModalSegue"完全匹配(MacOS下标识符区分大小写)
    • 确认Segue的Kind设置为Sheet或Modal(这是MacOS中从ViewController向WindowController发起模态转场的正确类型)
    • 检查连线逻辑:是从按钮直接拖到SplitWindowController,而非拖到其内部的子ViewController

2. 手动触发Segue(强制触发PrepareForSegue)

若自动连线的Segue未触发PrepareForSegue,可改为在按钮点击事件中手动调用PerformSegue,确保方法被系统调用:

partial void OnOpenSplitWindowButtonClicked(NSObject sender)
{
    PerformSegue("ModalSegue", this);
}

3. 完善PrepareForSegue中的类型校验

在PrepareForSegue中添加空值检查,避免类型转换失败导致数据传递失效:

public override void PrepareForSegue(NSStoryboardSegue segue, NSObject sender)
{
    base.PrepareForSegue(segue, sender);

    if (segue.Identifier == "ModalSegue")
    {
        var splitWindowController = segue.DestinationController as SplitWindowController;
        if (splitWindowController != null)
        {
            splitWindowController.Presentor = this;
            splitWindowController.Filename = filename;
        }
    }
}

4. 备选方案:通过SplitWindowController的内容视图控制器传递数据

若上述方法仍无效,可直接获取SplitWindowController内部的目标ViewController传递数据(需替换YourSplitContentViewController为实际的内容控制器类型):

public override void PrepareForSegue(NSStoryboardSegue segue, NSObject sender)
{
    base.PrepareForSegue(segue, sender);

    if (segue.Identifier == "ModalSegue")
    {
        var splitWindowController = segue.DestinationController as SplitWindowController;
        if (splitWindowController != null)
        {
            var targetVC = splitWindowController.Window.ContentViewController as YourSplitContentViewController;
            if (targetVC != null)
            {
                targetVC.Filename = filename;
                targetVC.Presentor = this;
            }
        }
    }
}

5. 检查SplitWindowController的生命周期方法

确认WindowDidLoad方法中没有重置Filename或Presentor属性,避免覆盖已传递的数据。


内容的提问来源于stack exchange,提问作者shiekh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:25:17