title: Why must I keep declaring the same required but not implemented initializer for init(coder aDecoder) for my programatic UIViewController subclass?
body: <p>Perhaps it is just me, but I find certain aspects of swift... obtuse to say the least.</p>
  
  <p>I  don't use Interface Builder most of the time because I like using <code>PureLayout</code>. So I was hoping to make a <code>UIViewController</code> subclass, say <code>PureViewController</code>, that had a handy <code>init</code> without parameters:</p>
  
  <pre><code>class PureViewController : UIViewController {
  
      init() {
          super.init(nibName: nil, bundle: nil)
      }
  
  }
  </code></pre>
  
  <p>But this is not okay, for XCode tells me I must also implement <code>init(coder aDecoder: NSCoder)</code>. Okay, that's fine! That's why I made this class - so I don't have to do this again for subclasses.</p>
  
  <pre><code>class PureViewController : UIViewController {
  
      init() {
          super.init(nibName: nil, bundle: nil)
      }
  
      required init(coder aDecoder: NSCoder) {
          fatalError("init(coder:) has not been implemented")
      }
  
  }
  </code></pre>
  
  <p>Ok, now here's what I don't get.</p>
  
  <p>I define a subclass, <code>SomePureViewController : PureViewController</code>, with an initializer <code>init(viewModel:ICrackersViewModel)</code>...</p>
  
  <pre><code>class SomePureViewController : PureViewController {
  
      init(viewModel:ICrackersViewModel) {
          super.init()
      }
  
  }
  </code></pre>
  
  <p>But it <strong>STILL</strong> wants me to define the same stupid initializer till kingdom come!</p>
  
  <pre><code>class SomePureViewController : PureViewController {
  
      init(viewModel:ICrackersViewModel) {
          super.init()
      }
  
      required init(coder aDecoder: NSCoder) {
          fatalError("init(coder:) has not been implemented")
      }
  
  }
  </code></pre>
  
  <p>Now I understand the idea - there is no <code>init(decoder)</code> in my subclass, even though it is defined in its parent class.</p>
  
  <p>Maybe I've always dealt with this issue with <code>UIViewController</code> and never noticed it before.</p>
  
  <p>My questions are as follows:</p>
  
  <ol>
  <li>Is there something I am doing wrong to cause this behavior?</li>
  <li>Is there any way outside of inheritance that I can avoid repeating myself?</li>
  <li>Are there plans to any plans to change this?</li>
  </ol>