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

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

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

然后

@implementation DemoViewController

- (void)loadView
{
    UIControl *control = [[UIControl alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    [self setView:control];
}

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

阅读 4.4k
1 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题