如何用代码的方式使ViewControl的View继承自UIControl

理论上使用loadView这个方法,在view为nil的时候,被调用,各位看看我代码有啥问题没?创建一个不带xib的工程 在APPDelegate.m里

 DemoViewController *dvc = [[DemoViewController alloc] initWithNibName:nil bundle:NULL]; [self.window addSubview:dvc.view];

然后

@implementation DemoViewController

- voidloadView
{ UIControl *control = [[UIControl alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; [self setView:control];
}

为什么之后用self.view仍然无法使用UIControl的方法呢?

整明白了,使用loadView改变self.view的类型为UIControl,编译器并不会知道,所以直接用UIControl的方法,编译器会报错。它只有在运行时才知道能实现UIControl的方法,刚用respondsToSelector验证了下果然如此。

看来以后想用还是performSelector 或用 (XXX)强制类型转换下吧。

发表评论

电子邮件地址不会被公开。 必填项已用*标注