设计一个XIB并在不同的UIViewControllers中重用它

时间:2014-03-10 21:14:07

标签: objective-c storyboard xib reusability

我想在每个UIView中使用一个UIViewControllers。主UI设计有Storyboard。额外的UIView有自己的XIB。

因此,我不想手动将额外UIView的用户界面放入每个UIViewController,并在每个UIViewController上连接出口。所以我想也许有可能在一个XIB中创建UI和连接,然后以某种方式重用它。这可能吗?如果是的话怎么样?

2 个答案:

答案 0 :(得分:1)

只需将此行添加到ViewControllers即可获得对自定义视图的引用:

YourView *yourView = (YourView *)[[NSBundle mainBundle] loadNibNamed:@"YourXIB"
                                                               owner:self
                                                             options:nil].firstObject;

但是,由于您希望在所有ViewControllers中都使用此自定义视图,因此我建议您使用一个包含上述行的UIViewController子类,然后为项目中的每个附加子类创建UIViewController子类。这样你就可以在每个ViewController中引用你的自定义视图,但只需要写一次这个行。

答案 1 :(得分:0)

我认为可以在函数initWithNibName:中保留相同的名称,因此您可以在您的某个控制器中执行此操作:

UIViewController *oneViewController = [[FirstViewControllerClass alloc] initWithNibName:@"MyXIBThatWillStayTheSame" bundle:nil];
[self presentModalViewController:oneViewController animated:YES];

并在另一个中执行此操作:

UIViewController *anotherViewController = [[AnotherViewControllerClass alloc] initWithNibName:@"MyXIBThatWillStayTheSame" bundle:nil];
[self presentModalViewController:anotherViewController animated:YES];