Question: I have a `HomeViewController` that is opening a `WelcomeViewController` using segue and is from type Sheet.

In `WelcomeViewController` the User is entering information and then closing(dismissing) it. After `WelcomeViewController` is closed I want to update `HomeViewController` by changing the `String` value of a `TextField`.

The Problem is, that `ViewDidAppear` in `HomeViewController` is not called after dismissing `WelcomeViewController`. I did not have this Problem before when developing for iOS.

How can I fix this? I tried to call it manually but got problems, because my `IBOutlets` were set to nil and I could not change the text in my `TextField`.

This is the code that invokes the segue: 

```
self.performSegue(withIdentifier: "welcome", sender: self)

```

this is my `viewDidAppear` in `HomeViewController`:

```
override func viewDidAppear() {
   super.viewDidAppear()
   if (CoreDataAccess().countUsers() == 0) {
       self.performSegue(withIdentifier: "welcome", sender: self)
   } else {
       //continue execution..
   }
}

```

In `WelcomeViewController` I dismiss the `ViewController` using this code

```
dismiss(self)

```

Answer: 
This is how I solved it using a `delegate`.
Thanks to @ullstrm for the suggestion.

First I added this protocol to `HomeViewController`

```
protocol WelcomeDelegate {
    func insertData(_ name: String, birthday: Date)
}

```

Then this `prepare(for segue:)`

```
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    if let destinationViewController = segue.destinationController as? WelcomeViewController {
        destinationViewController.delegate = self
    }
}

```

And this extension at the bottom (I know it's not ok to call viewDidAppear manually , but it's working for now)

```
extension HomeViewController : WelcomeDelegate {
    func insertData(_ name: String, birthday: Date) {
        viewDidAppear()
    }
}

```

Then in `WelcomeViewController` I added this variable

```
var delegate:WelcomeDelegate? = nil

```

And this line right before `dismiss(self)`

```
self.delegate?.insertData(tfName.stringValue, birthday: dpAge.dateValue)

```
Add your code to ViewWillAppear() instead of ViewDidAppear().

or you call a method in the HomeViewController when dismissing WelcomeViewcontroller

```
dismiss(animated: true) {
   self.presentedViewController.myMethod()
}

```