如何防止Interface Builder将项目添加到自定义视图?

时间:2018-09-21 22:03:53

标签: swift uiview interface-builder

更新:为清楚起见进行了编辑。

这不是热门话题,但很烦人,我想弄清楚该怎么解决。

我有一个自定义的UIView。确切地说,是一个UIScrollView,它在运行时以编程方式填充了一堆UIView。这并不意味着要在Interface Builder(IB)中嵌入任何内容。

任何UIView都会发生什么,就是当您将另一个元素拖到该UIView上时,该UIView将变为“可放置”,并允许将另一个元素拖放到其中。

Apple的一些本地元素不允许您将东西放入其中,例如UIPickerView。

是否有一个标志或我可以设置的标志,以便不允许IB向其添加任何内容?

就像我说的那样,不是露骨的。如果添加了东西,则它们会在程序化填充发生之前被销毁,但是似乎很“整洁”,以表明它不是“可丢弃的”。

更新:在下面的屏幕截图中,“登录选择器视图”是标准的UIPickerView,“显示结果滚动器视图”是我的自定义滚动器。如果我将某些东西从“库”中拖出,然后尝试将其拖放到“选择器视图”中,则不会发生任何事情。但是,我可以将其放入“显示结果视图”中。

我想要的是能够将“显示结果视图”声明为“禁飞区”,因此它不再是可投放的。

我希望这很清楚。

Cannot Drop On PickerView

无法放到PickerView中

enter image description here

可以在我的自定义视图上显示

1 个答案:

答案 0 :(得分:1)

我并不是说这是一个很好的解决方案,但是如果您使用的是故事板(而不是xib),那么它似乎可以工作……

  1. 在情节提要中,不要将滚动视图拖出库,而要拖出容器视图。
  2. IB通过嵌入的segue自动创建一个连接到新容器视图的新情节提要板场景。删除新创建的场景。
  3. 将容器视图的自定义类设置为UIScrollView

IB不允许您将任何子视图添加到容器视图。

请注意,IB也没有在“属性”检查器中向您显示任何UIScrollView特定的属性,因此,如果您需要自定义此时髦的滚动视图,则必须以编程方式进行。

该库未在xib中提供容器视图,因此没有情节提要。