繁体   English   中英

将 UIViewController 子类的子类与 UIView 子类的子类一起使用

[英]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一样使用ExpandedControlViewControlView

在故事板中,选择层次结构视图。

选择层次结构视图

然后在左侧的层次结构中选择您的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM