Optional Chaining vs Optional Binding: When to use which?
<p>While searching for a propery way to refresh the <code>UINavigationBar</code> (see: <a href="https://stackoverflow.com/questions/39066126/how-to-properly-refresh-a-uinavigationbar">How to properly refresh a UINavigationBar?</a>) I came across this question:</p>

<p>This refreshes the <code>UINavigationBar</code> as intended, even though not in a clean way: </p>

<pre><code>if let navigationController = self.navigationController {
    navigationController.popViewControllerAnimated(false)
    navigationController.pushViewController(self, animated: false)
}
</code></pre>

<p>However, this pops the current view controller, but does not push it:</p>

<pre><code>navigationController?.popViewControllerAnimated(false)
navigationController?.pushViewController(self, animated: false)
</code></pre>

<p>How is this behaviour explainable?</p>