1

下午好!

我对 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。刚刚接受并修改了问题。尽管如此,问题仍然存在。

4

2 回答 2

2

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

于 2016-01-26T13:59:18.880 回答
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
}
于 2016-01-26T13:19:59.570 回答