下午好!
我对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。刚刚接受并修改了问题。不过,问题仍然存在。
答案 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
}