通过返回的类型

时间:2016-01-26 13:09:34

标签: ios swift anyobject

下午好!

我对Swift比较陌生,虽然我觉得我已经成功地绕过了大部分内容,但是我在设置segue的destinationViewController方面遇到了困难。

据我所知,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。刚刚接受并修改了问题。不过,问题仍然存在。

2 个答案:

答案 0 :(得分:2)

你要做的是不合逻辑的。这是引用必须符合的类或协议的编译时指示。试图在运行时获取此引用对您没有帮助。相反,您应检查是否符合静态协议,然后根据该协议将调用分派给未知的实现类。

答案 1 :(得分:0)

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
}