在故事板中创build一个独立的视图以编程方式使用

我试图创build和devise一个使用故事板的UIView但以编程方式将其包含在UIActionSheet 。 这基本上是为了避免使用像素的CoreGraphics定位function

在旧的xcode中,我记得可以在没有任何控制器的情况下将UIView拖到nib上。

该视图显然必须连接到类,所以它会有一个IBOutlet,但不会被添加到self.view

有一件事情让我觉得这应该是可能的是,如果你拖动一个UIView到控制器黑色的故事板,它就像这样popup:

捕获在UIView

但它没有在屏幕上显示。 这个function是什么? 我能以某种方式打开这个视图并devise一下吗?

只需创build一个新的.xib文件。

  1. 右键单击导航区域中的某个位置,然后select“新build文件…”。
  2. 从右侧列表中select“用户界面”,然后select“查看”。
  3. 点击“下一步”,“下一步”,为您的新视图命名,然后点击“创build”。
  4. 一个新的.xib填充将被添加到您的项目。
  5. 双击新的.xib文件,并在Interface Builder(不是Storyboard)中打开。
  6. 编辑/devise您的视图,以您的喜好。

然后,在Interface Builder中获得新视图(.xib)之后,创build一个新的UIView子类( 例如MyView ),将新视图(.xib)的类切换为MyView,创build一个实例MyView在您的控制器中,并将其作为子视图添加到其他视图。


*为了回答你关于底部那个小黑条的问题,它被称为'Dock',它只是你场景的顶级文档的一个微型代表。 该docker便于快速拖放图标并进行连接。 在这里看到苹果的故事板描述。 Ray Wenderlich在这里有一个简单的故事板教程。

在故事板上的UIViewController之外不能有UIView 。 我猜这是因为故事板不知道如何识别或实例化当前的API。 这是我自己用过的东西。 解决方法是使用一个UIView的XIB,并以编程方式加载(就像以前那样)。 我发现对大多数项目使用故事板,并将多个视图控制器的可重复视图的XIB结合在一起工作。

这里是我用来加载一个XIB作为一个自定义对象的一部分与对象被初始化的一些代码。

 - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code [[[NSBundle mainBundle] loadNibNamed:@"BannerView" owner:self options:nil] objectAtIndex:0]; [self addSubview:self.view]; self.frame = self.view.frame; } return self; } 

至于将观点拖到故事板上的黑色栏中。 这些视图仍然是UIViewController一部分,但它们不是顶层视图的“子视图”。 我认为文档大纲很好地显示了层次结构。

下面的视图具有2.1.1视图,2.1.2视图等等,因为它们不是我的主视图的子视图。 结果是,它们不会默认显示。 我有IBOutlets设置,并有条件地使用标准addSubview:removeFromSuperview从我的主视图层次中添加/删除它们。

IB文档大纲示例