下午好!
我对 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
}