title: Swift 3, function in protocol that return object of class that conforms to a protocol
body: <p>I've read so many articles about classes and protocols but still didn't found a solution. May be I just didn't understand all of them.</p>
  
  <p>So there's a simple protocol (removed some parts not relevant to the problem):</p>
  
  <pre><code>protocol InfoObject : NSObjectProtocol
  {
      var statusImage: UIImage? {get}
  
      func viewControllerForItemIndex(_ index: Int?) -&gt; UIViewController?
  }
  </code></pre>
  
  <p>But I would like the function <code>viewControllerForItemIndex</code> not only return an object of type <code>UIViewController?</code> but it should conform to the protocol <code>InfoObjectDisplaying</code> (not shown here) as well.</p>
  
  <p>In Objective-C I would write:</p>
  
  <pre><code>- (UIViewController&lt;InfoObjectDisplaying&gt;*)viewControllerForItemIndex:(NSInteger) index;
  </code></pre>
  
  <p>Is this possible in swift?</p>