我想为 iOS5 开发并有一个情节提要......我刚刚在情节提要上使用 UIViewController 创建了 UIView。我添加了许多其他 UIButtons 和标签,并为 VC 创建了出口。
我想在单个父视图上将此视图与它的视图控制器一起使用 3 次。这怎么可能?我不想复制“很多其他 UIButtons 和标签”......
也许我应该在单独的 XIB 中从情节提要中创建这个视图?我将如何在情节提要中使用 XIB?
更新:
谢谢你,Juzzz - 你的解决方案很完美:
我想为 iOS5 开发并有一个情节提要......我刚刚在情节提要上使用 UIViewController 创建了 UIView。我添加了许多其他 UIButtons 和标签,并为 VC 创建了出口。
我想在单个父视图上将此视图与它的视图控制器一起使用 3 次。这怎么可能?我不想复制“很多其他 UIButtons 和标签”......
也许我应该在单独的 XIB 中从情节提要中创建这个视图?我将如何在情节提要中使用 XIB?
更新:
谢谢你,Juzzz - 你的解决方案很完美:
您必须创建 2 个自定义视图控制器(故事板中的每个视图一个。例如:
@interface GraphCollectionViewController : UIViewController
@interface GraphViewController : UIViewController
要连接它们,您可以使用称为: UIViewController 遏制
为您的 GraphCollectionViewController 为您的 UIViews 创建 3 个插座。然后创建 GraphViewController 的 3 个属性(或一个数组,你想要什么)并在视图加载时初始化它们。
@property (strong, nonatomic) IBOutlet UIView *topView;
@property (strong, nonatomic) IBOutlet UIView *middleView;
@property (strong, nonatomic) IBOutlet UIView *bottomView;
@property (strong, nonatomic) GraphViewController *topGraphViewController;
@property (strong, nonatomic) GraphViewController *middleGraphViewController;
@property (strong, nonatomic) GraphViewController *bottomGraphViewController;
...
//top graph
self.topGraphViewController = [storyboard instantiateViewControllerWithIdentifier:@"GraphViewController"]; //init with view from storyboard
self.topGraphViewController.view.frame = self.topView.bounds; //set frame the same
[self.view addSubview:self.topGraphViewController.view];
[self addChildViewController:self.topGraphViewController];
[self.topGraphViewController didMoveToParentViewController:self];
//middle graph
self.middleGraphViewController = [storyboard instantiateViewControllerWithIdentifier:@"GraphViewController"]; //init with view from storyboard
self.middleGraphViewController.view.frame = self.middleView.bounds; //set frame the same
[self.view addSubview:self.middleGraphViewController.view];
[self addChildViewController:self.middleGraphViewController];
[self.middleGraphViewController didMoveToParentViewController:self];
//bottom graph
self.bottomGraphViewController = [storyboard instantiateViewControllerWithIdentifier:@"GraphViewController"]; //init with view from storyboard
self.bottomGraphViewController.view.frame = self.bottomView.bounds; //set frame the same
[self.view addSubview:self.bottomGraphViewController.view];
[self addChildViewController:self.bottomGraphViewController];
[self.bottomGraphViewController didMoveToParentViewController:self];
我认为你说对了。为了更多地理解这个例子。
您可以创建一个新的视图类(使用它自己的 .h、.m 文件)并将其基于您自己创建的 ViewController。
至于代码:
@interface ViewController : UIViewController
假设上面是您想在其他地方使用的原始 ViewController。这里面有按钮、标签等。
当您创建一个新的视图类时,它基于您自己而不是 UIViewController 类,如下所示:
@interface MyNewController : ViewController
现在 MyNewController 基于您之前创建的 ViewController,它应该还有您创建的按钮、标签等。
编辑:您可能还必须在情节提要中更改视图的基类。单击要更改的视图,查看右侧属性窗口,在自定义类下选择您自己的控制器,在本例中为 ViewController。