如何为包含中的视图控制器提供参数?

问题描述

我正在尝试将一个参数传递给包含在其中的视图控制器:

// .storybook/main.js

// Imports the app's Webpack Config (change this to require() style with older Node.js versions).
import appWebpackConfig from '../webpack.config.js';

const isCSSRule = (rule) => rule.test.toString() === '/\\.css$/';

module.exports = {
    ...
    webpackFinal: (config) => {
        // Removes the existing CSS rule.
        config.module.rules = config.module.rules.filter((rule) => !isCSSRule(rule));

        // Tells Storybook to use the same CSS rule config as our app.
        config.module.rules.push(appWebpackConfig.module.rules.find(isCSSRule));

        return config;
    }
    ...
};

let childVC = ChildViewController() addChild(childVC) childVC.view.frame = frame view.addSubview(childVC.view) childVC.didMove(toParent: self) 具有多个属性,其中之一必须从父视图控制器传递。

我已经尝试了一些方法,但是都没有效果

ChildViewController

let childVC = ChildViewController(someProperty: someProperty)

解决方法

此行:

let childVC = ChildViewController()

几乎总是错误的。这将创建一个ChildViewController的空实例,其中未设置任何视图,渠道或操作。

通常,您想从Storboard或nibfile实例化视图控制器。

如果您询问如何在子视图控制器的视图中安装内容,答案是“不要这样做”。

如果您希望父视图控制器具有子视图控制器,最简单的方法是将容器视图放在IB中的父视图控制器上。然后,从该容器视图中将控件拖到要成为子视图的视图控制器上,并在出现提示时,选择“ embed segue”作为要创建的链接类型。

这将导致系统在容器视图中安装子视图控制器,并连接所有管道以使其正常工作

在实例化子视图控制器之后但在加载视图之前,将立即调用父视图控制器的prepare(for:sender:)方法。您可以将代码放入prepare(for:sender:)方法中,以将值传递给子视图控制器(不直接设置其视图,而是设置属性或调用方法)