In StoryBoard, add a new View controller and set its class to DateCreatedViewController
Add a new button underneath the dateLabel in DetailViewController with the title “Change Date”
Add a segue with Identifier “changeDate” from the new button to the new View controller.
Add the following method in class DetailViewController
From the above Apple Document extract for loadView():
You should never call this method directly. The view controller calls this method when its view property is requested but is currently nil. This method loads or creates a view and assigns it to the view property.
If the view controller has an associated nib file, this method loads the view from the nib file. A view controller has an associated nib file if the nibName property returns a non-nil value, which occurs if the view controller was instantiated from a storyboard, if you explicitly assigned it a nib file using the init(nibName:bundle:) method, or if iOS finds a nib file in the app bundle with a name based on the view controller’s class name. If the view controller does not have an associated nib file, this method creates a plain UIView object instead.
If you use Interface Builder to create your views and initialize the view controller, you must not override this method.
You can override this method in order to create your views manually. If you choose to do so, assign the root view of your view hierarchy to the view property. The views you create should be unique instances and should not be shared with any other view controller object. Your custom implementation of this method should not call super.
If you want to perform any additional initialization of your views, do so in the viewDidLoad() method.
2 things you should change in your code:
don’t call super.loadView()
call this method only to attach a root view. Any additional initialisation (like add subviews) should be made in viewDidLoad()
Besides, looking at what your code is actually doing inside loadView(), I noticed there’s no need at all to implement it inside loadView(). You should move your code entirely in viewDidLoad()
If the DatePicker control is created by code, then its constraints can only be set up by code.
If the DatePicker control is created at the storyboard with Interface Builder, then its constraints can be set up at the storyboard with Interface Builder or by code.
Another approach:
Replace DetailViewController with a TableViewController with static cells. Put The DatePicker Control inside one of the tableview cell. Hide/unhide the DatePicker Control by tapping the cell. It will look like the Edit Event View of the native Calendar App.