Swift 故事板不';是否不包含标识符错误的视图控制器?

Swift 故事板不';是否不包含标识符错误的视图控制器?,swift,xcode,Swift,Xcode,我试图在viewcontroller上演示一个编程生成的viewcontroller,但我不知道如何生成这样一个生成的viewcontroller的ID class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically

我试图在viewcontroller上演示一个编程生成的viewcontroller,但我不知道如何生成这样一个生成的viewcontroller的ID

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBAction func didTapButton(_ sender: Any) {
        let controller = storyboard!.instantiateViewController(withIdentifier: "SecondController")
        present(controller, animated: true)
    }
}
从下面的代码中可以看出,我有一个基本视图控制器“ViewController”,如果我单击一个按钮(didTapButton),我希望显示一个编程生成的视图控制器(SecondViewController)。 虽然我不能设置第二个视图控制器的名称,但我甚至不能执行代码——InstanceEviewController(带标识符:“SecondController”)

class SecondViewController: UIViewController {
    private var customTransitioningDelegate = TransitioningDelegate()

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: "SecondController", bundle: nibBundleOrNil)
        configure()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        configure()
    }
}

如何设置第二个视图控制器的ID?如果这不是应该做的,我还能做些什么呢?

编程创建的vcs不需要任何标识符,只需执行即可

class ViewController: UIViewController { 
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .green
    }
}

@IBAction func didTapButton(_ sender: Any) {
    let vc = SecondViewController()
    present(vc, animated: true)
}


编辑:

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .green

        DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
            let vc2 = SecondViewController()
            vc2.providesPresentationContextTransitionStyle = true
            vc2.definesPresentationContext = true
            vc2.modalPresentationStyle = .overCurrentContext
            self.present(vc2, animated: true)
        }
    }
}


class SecondViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let v = UIView()

        v.backgroundColor = .red

        view.addSubview(v)

        v.translatesAutoresizingMaskIntoConstraints = false

        NSLayoutConstraint.activate([
            v.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
            v.centerYAnchor.constraint(equalTo: self.view.centerYAnchor),
            v.widthAnchor.constraint(equalToConstant:200),
            v.heightAnchor.constraint(equalToConstant:200)

       ])

    }
}

instantialeviewcontroller
用于实例化给定情节提要中定义的内容。因此,要么通过xcode在故事板中命名,要么必须做其他事情。例如,从代码实例化对象,即让c=SecondViewController()(使用适当的参数)。您正在尝试混合不同的方法来实例化对象。

非常感谢您的快速回复。尽管如此,我读了一篇文章,其中使用intantiateViewController使viewcontroller显示为自定义大小,所以我尝试使用它。它仍然能够使用您的方式自定义新视图控制器的大小吗?谢谢!这是非常直观的方式。