通过返回的类型填充 prepareForSegue 的目的地视图控制器



下午好!

我对 Swift 比较陌生,尽管我认为我已经设法解决了大部分内容,但是我很难间接设置 segue 的目的地ViewController。

我知道 destinationViewController 接受 AnyObject?但是我如何将类作为函数的返回值直接返回到 destinationViewController? 像这样:

override func prepareForSegue( segue: UIStoryboardSegue, sender: AnyObject? ) {
    if( segue.identifier == "nextView" ) {
        let nextScene =  segue.destinationViewController as? getNextView()
        //  ...blah blah blah...
    }
}

其中 getNextView() 被子类覆盖,该子类的唯一目的是返回对 destinationViewController 的引用:

override func getNextView -> AnyObject! {
    return SomeClassBasedOnUIViewController
}

XCode 不高兴我在我的 prepareForSegue() 中的一行上使用"连续语句",我不知道如何解决它,所以任何帮助将不胜感激!

谢谢!

编辑:

很抱歉,getNextView() 实际上并没有返回 Optional。 只是注意到了这一点并修改了问题。 不过,无论如何,这个问题仍然存在。

你想做的事情是不合逻辑的。这是引用必须符合的类或协议的编译时指示。尝试在运行时获取此引用对您没有帮助。相反,您应该检查是否符合静态协议,然后将基于该协议的调用调度到未知的实现类。

override func prepareForSegue(segue: UIStoryboardSegue, sender:AnyObject!) {
    if segue.identifier == "nextView" {
      let nextScene : BaseClassBasedOnUIViewController =  segue.destinationViewController as! getNextView()
    }
}

destinationViewController 不应该是可选的。你能试试这个吗?

override func getNextView -> AnyObject! {
  return SomeClassBasedOnUIViewController
}

最新更新