Swift 如何以编程方式显示ViewController?

Swift 如何以编程方式显示ViewController?,swift,storyboard,presentviewcontroller,Swift,Storyboard,Presentviewcontroller,我目前有一个EventPage类声明为UIViewController类型,但在按下带有填充文本字段的save按钮时,会发生到空白ViewController的转换。我已将该类附加到main.storyboard中正确的ViewController。这里的问题是您正在创建一个新的EventPage,但它不是从storyboard继承的 1. 转到情节提要中的检查器,选择视图控制器,并为视图控制器编写标识符(可以是任何内容) 在故事板ID中写入: 2. 替换 import UIKit //Ev

我目前有一个EventPage类声明为UIViewController类型,但在按下带有填充文本字段的save按钮时,会发生到空白ViewController的转换。我已将该类附加到main.storyboard中正确的ViewController。

这里的问题是您正在创建一个新的
EventPage
,但它不是从storyboard继承的

1. 转到情节提要中的检查器,选择视图控制器,并为视图控制器编写标识符(可以是任何内容)

在故事板ID中写入:

2. 替换

import UIKit

//EventList ViewController
class EventPage: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    
    }
    
}

class EventForm: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        }
    
    //IBOutlets
    @IBOutlet weak var eventNameField: UITextField!
    @IBOutlet weak var fromTimePicker: UIDatePicker!
    @IBOutlet weak var toTimePicker: UIDatePicker!
    @IBOutlet weak var colorPreview: UIView!

    @IBAction func cancel(_ sender: Any) {
        
        //empty text field
        eventNameField.text = ""
    }
    
    @IBAction func save(_ sender: Any) {
        if (eventNameField.hasText) {
            
            //fix error handling
            eventNameField.backgroundColor = UIColor.systemGray2
            
            //pull data from fields
            let text = eventNameField.text!
            let fromTime = fromTimePicker.date
            let toTime = toTimePicker.date
        
            //initialize object
            let currentEvent = EventModel(eventName: text, fromTime: fromTime, toTime: toTime, color: storedColor)
        
            //append to data model
            EventDataArray.append(currentEvent)
            
            //transition
            present(EventPage(), animated:true)
            
        }
        else {
            eventNameField.backgroundColor = UIColor.systemRed
        }
    }
}
与 (别忘了用前面输入的id替换“MYIDENTIFIER”)

让viewController=UIStoryboard(名称:“Main”,bundle:nil)。实例化viewController(标识符为:“MYIDENTIFIER”)!事件页
//如果需要对视图控制器执行任何配置,请在此处执行。
//例如:
//viewController.label.text=“你好,世界!”
存在(viewController,动画:真)

如果序列图像板文件名的名称未被称为Main,请将步骤2中的“Main”替换为序列图像板文件名(不包括.Storyboard)

您需要显示视图控制器的一个实例,调用初始化器,如
present(EventPage(),动画:true)
这将创建一个新的透明弹出式viewcontroller,而不是调用EventPage在EventPage上添加背景色以检查是否加载了正确的页面。请检查我的答案,我想我理解代码中的问题。无论我使用什么标识符,它给了我一个错误,标识符超出了范围。什么是超出范围?您能告诉我完整的错误吗?“在范围中找不到'eventpageidentifier'是完整的错误尝试使用带撇号的'eventpageidentifier'
present(EventPage(), animated:true)