swift - 如何防止 Interface Builder 将项目添加到自定义视图?
问题描述
更新:为清楚起见进行了编辑。
这不是一个阻碍,但它很烦人,我想弄清楚如何解决它。
我有一个自定义 UIView。准确地说,一个 UIScrollView,它在运行时以编程方式填充了一堆 UIView。它并不意味着在 Interface Builder (IB) 中嵌入任何东西。
任何 UIView 发生的情况是,当您将另一个元素拖到它上面时,UIView 变为“可放置”,并允许将另一个元素放入其中。
有一些原生的 Apple 元素不会让您将内容放入其中,例如 UIPickerView。
是否有一个标志或我可以设置的东西,这样它就不允许 IB 向它添加任何东西?
就像我说的,不是炫耀。如果添加了东西,它会在程序化填充发生之前被销毁,但它似乎“更简洁”以明确它不是“可丢弃的”。
更新:在下面的屏幕截图中,登录选择器视图是标准的 UIPickerView,显示结果滚动器视图是我的自定义滚动器。如果我将某些内容从库中拖出,并尝试将其放到 Picker 视图中,则不会发生任何事情。但是,我可以将它放到我的显示结果视图中。
我想要的是能够将我的显示结果视图声明为“禁飞区”,因此它不再可放置。
我希望这能说清楚。
无法拖放到 PickerView
可以放在我的自定义视图上
解决方案
我并不是说这是一个很好的解决方案,但如果您使用的是故事板(而不是 xib),那么它似乎可以工作......</p>
- 在情节提要中,不要将滚动视图拖出库,而是拖出容器视图。
- IB 自动创建一个新的故事板场景,通过嵌入转场连接到新的容器视图。删除新创建的场景。
- 将容器视图的自定义类设置为
UIScrollView
.
IB 不允许您将任何子视图添加到容器视图。
请注意,IB 也不会UIScrollView
在属性检查器中向您显示任何特定属性,因此如果您需要自定义这个时髦的滚动视图,您必须以编程方式进行。
该库不提供 xib 中的容器视图,因此需要情节提要。
推荐阅读
- javascript - 如何检测网站是否被谷歌缓存/爬虫查看
- flutter - Flutter TextFormField 在聚焦时使应用程序崩溃
- python-3.x - 如何提取数组的元素(共享对象)
- spring - 如何在 DBUtil 中获取 CommonDao 的实例
- python - 几乎增加序列,很少有测试用例失败
- memory - rust 可以保证我使用正确的对象池释放对象吗?
- python - 使用 Pandas Python 进行 CSV 文件标记化
- macos-catalina - `launchctl list` 中缺少 MySQL8 服务器
- python-3.x - 我可以在循环外的特定点强制进入 while True 或 if/elif/else 循环吗?
- javascript - 模型揭示了foundation-zurb中的ajax调用问题