Interface Builder - 如何创建具有许多子视图的自定义UIView

Woo*_*ock 4 xcode cocoa-touch objective-c interface-builder ios

如何在界面构建器中创建自定义UIView(包含许多子视图,UITextFields等)?

我不希望带有NIB的viewController只是一个简单的UIView,有很多子视图,在IB中创建,然后我可以只分配init和use,这可能吗?

rde*_*mar 16

是的,您可以在笔尖中创建UIView - 当您创建基于视图的笔尖时,这就是您正在创建的UIView.没有视图控制器(尽管通常,您将视图控制器设置为nib的文件所有者).

您需要创建一个自定义视图类,并将xib上的视图类更改为该自定义类,以在该视图中连接IBOutlets.如果要在控制器中使用视图,可以像这样实例化它:

UINib *nib = [UINib nibWithNibName:@"CustomView" bundle:nil];
CustomView *view = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

这种方法的局限性在于你的出口属于视图类,而不属于视图控制器,它可能不是(但可能)是在MVC意义上做的正确的事情.

  • @JohnWoods,如果您希望视图控制器具有指向视图中UI元素的属性(而不是视图中的IBOutlets),您可以通过为每个视图提供唯一标记,并使用viewWithTag:来查找它们,并将它们分配给一个财产.在这种情况下,您不需要创建自定义类,因为您不会使用IBOutlets. (3认同)