[英]Using a subclass of UIViewController subclass with subclass of UIView subclass
我的应用程序中有一个特定视图的 MVC 架构。 现在我想创建视图和控制器部分的子类。 原始UIViewController
子类加载了来自故事板的UIView
子类。 我怎样才能让这个UIViewController
子类的子类在加载视图时使用我的 UIView 子类代码的子类?
编辑
这里有一些关于我想做的事情的更多细节。 我目前有这些课程:
ControlView
ControlViewController
与故事板相关联。 我使用以下方法加载 ControlViewController 的实例:
self.storyboard!.instantiateViewControllerWithIdentifier("ControlViewController")! as! ControlViewController
现在我想要做的是子类ControlView
以便我可以更改一些约束并添加一些额外的子视图。 我们称这个子类为ExpandedControlView
。 我还想ControlViewController
因为我想从ExpandedControlView
添加一些额外的操作到控制器。 这可以称为ExpandedControlViewController
。
然后我希望能够实例化ExpandedControlViewController
并像ControlViewController
一样使用ExpandedControlView
和ControlView
。
在故事板中,选择层次结构视图。
然后在左侧的层次结构中选择您的 UIViewController 的视图,并在右侧的身份检查器中选择该视图的类。
或者如果你想在代码中做到这一点。 覆盖 ControlViewController 上的 viewDidLoad,实例化您的自定义视图并将您的 ControlViewController 的视图属性设置为您的自定义视图。
-(void)loadView{
ControlView *myCustomView = [[ControlView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];
self.view = myCustomView;
}
这样做时的一个警告是,任何子视图的布局可能会从调用 loadView 时发生变化。 因此,如果您的自定义视图中有子视图,您还应该覆盖自定义视图中的 layoutSubviews 并在那里再次设置所有视图的子视图的框架属性。
在视图控制器子类中实现 loadView 并使用自定义视图子类的实例设置视图属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.