我在使用Swift中的子类时遇到了一些问题,希望有人能够帮助我。
我的情况
两个视图控制器:
VC1 只有一些UIButtons
EffectVC 根据在VC1上按下的按钮执行一些动画
import UIKit
protocol viewAnimation {
func initialStateSet()
func finalStateSet()
}
class EffectVC: UIViewController {
@IBOutlet weak var mainImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.initialStateSet()
}
override func viewDidAppear(animated: Bool) {
self.finalStateSet()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func initialStateSet() {
}
func finalStateSet() {
}
}
class GrowingEffect : EffectVC, viewAnimation {
override func initialStateSet() {
// some stuff
}
override func finalStateSet() {
// other stuff
}
}
问题
也许这是一个简单的问题,但我在Swift中无法做到我想要的:我需要根据按下的按钮设置子类。
换句话说,我需要根据VC1上按下的按钮从我的VC1中呈现子类化视图控制器。
例如,如果我按下第一个按钮,我想使用GrowingEffect类显示VC 2以使用一些自定义内容(此内容必须根据所选按钮更改)。
我尝试过的
使用IBAction创建我的子类化VC2并显示它
let storyboard = UIStoryboard(name:“Main”,bundle:nil)
let destinationViewController:UIViewController = storyboard.instantiateViewControllerWithIdentifier(“EffectVC”) as!GrowingEffect
self.presentViewController(destinationViewController,animated:true,completion:nil)
但我得到了
无法将类型为“ViewAnimationDemo.EffectVC”(0x109948570)的值转换为“ViewAnimationDemo.GrowingEffect”(0x109948650)。
- 使用PrepareForSegue
但我无法设置任何子类
我真正想做的事情
我知道还有其他解决方案,比如不使用storyboard,但现在我描述我想要做的事情,希望这是可能的:
在IB中只有一个视图控制器(EffectVC),与类EffectVC相关联。类EffectVC具有一些子类,如GrowingEffect。
在我的代码中,我想使用我需要的子类实例化视图控制器EffectVC:例如,使用GrowingEffect类在IB中实例化视图控制器EffectVC。
我知道如果对于EffectVC的每个子类都有一个视图控制器,我可以做到这一点,但我不希望在IB中有这么多视图控制器,因为它们是相同的,我想要更改的唯一内容是2种方法。