当我在视图上执行滑动时,如何为同一视图设置类?
我已经为我想要更改的类导入了头文件,例如#import "Circuit1.h"
- (IBAction)userSwiped:(UISwipeGestureRecognizer *)sender {
[self numberOfSwips];
self.numberOfSwips+=1;
if (self.numberOfSwips>3){
self.numberOfSwips=3;
}
if (self.numberOfSwips ==1) {
self.myView.class =super.Circuit1;}
else if (self.numberOfSwips ==2){
self.myView.class =super.Circuit2;}
else if (self.numberOfSwips ==3){
self.myView.class =super.Circuit3;
}
NSLog(@"%f",self.numberOfSwips);
}
它给了我self.myView.class = super.Circuit1
和另外2
答案 0 :(得分:0)
在运行时更改Objective-C对象的类在技术上是可行的,但是错误的想法。有关原因的详细解释,请参阅Objective-C: How to change the class of an object at runtime?。
但是,可以声明类型为Class
的变量,并使用其中存储的值来实例化对象:
Class customClass = [Circuit1 class];
然后是这样的:
[myView removeFromSuperview];
myView = [customClass alloc]initWithFrame:frame];
[containerView addSubView:myView];
但这会涉及每次用户刷新时重新创建视图。我不知道你的代码到底是什么,但如果视图很复杂,这几乎肯定是错误的方法。如果你只有3个子视图,也许最好根据需要创建它们,将它们存储在viewController中的实例变量数组中,并在用户滑动时将它们交换进出视图层次结构