从 Connections Inspector 中隐藏 Outlets 以获取自定义视图
Posted
技术标签:
【中文标题】从 Connections Inspector 中隐藏 Outlets 以获取自定义视图【英文标题】:Hide Outlets from Connections Inspector for Custom View 【发布时间】:2015-08-21 14:40:48 【问题描述】:我在 Swift 中使用nib
文件创建了一个自定义视图(数量视图)。我在自定义视图中创建了一些 IBOutlets
和 IBActions
(用于按钮、标签等)。
我尝试通过将类名分配给我的故事板中的UIView
来使用此自定义视图(数量视图)。
它显示了 Connections Inspector 中的所有 IBOutlets
和 IBActions
,如下图所示:。
我只想为自定义视图显示 delegate
。
可能的答案:
我想我可以使用 -viewWithTag
而不是 Outlets 来获取视图。
但是,我想知道是否可以同时拥有 Outlets 或者是否有更好的方法来做到这一点?
处理这种情况的其他可能方法(最佳)是什么?
【问题讨论】:
您已为您的属性和操作添加了 IBOutlet 属性。为什么不希望 Connections Inspector 显示它? IBOutlet 是 Connections Inspector 的开关。 @HarrisonXi:我的自定义视图非常复杂,我不想只通过编码来设计它,所以我使用单独的 xib 来设计它,但是为了访问我需要的其他 UI 组件在自定义视图类中采用IBOutlet
s,我也不想使用viewWithTag
方法。我只是想知道有没有其他方法。
不,不可能隐藏 IBOutlets 和 IBAction Connections Inspector。如果您不想在 Connections Inspector 中显示,请从属性中删除 IBOutlet 关键字。
【参考方案1】:
您还可以考虑以下解决方案: 您可以获取 QuantityViews(自定义视图)的子视图,并且可以通过其框架来源识别特定视图。 注意:你应该知道 customview 子视图框架
【讨论】:
【参考方案2】:如果您将类成员声明为 IB(IBOutlets 或 IBActions),则无法从情节提要中隐藏 IBOutlets。
IBOutlets 或 IBActions 只是接口构建器的指示符,因此当您尝试绑定它们时它可以在上面显示名称,它实际上调用 setValue:forKey: 方法来设置视图对 IBOutlet 属性的引用。
现在,如果您尝试在没有任何 IBoutlets 的情况下从文件的所有者类访问子视图,您需要有一个指向它的指针,因此您可以使用由界面生成器分配给子视图的 ObjectID 获取引用或者您可以使用 viewWithTag: 方法获取它。
在视图中添加或替换子视图时需要一直查找的ObjectID,因此更好更方便的方法是使用UIView类的tag属性。
所以我对这个问题的结论是使用前面提到的 viewWithTag 方法访问视图。
【讨论】:
UIKit 组件好像不是用 Nibs 创建的。如果是这样,那么我们会在 InterfaceBuilder 中看到很少的内部@IBOutlets,或者他们有隐藏它的工具。【参考方案3】:我认为你的方法是正确的。但有时 Xcode 不能正常工作。 以下使 IBOutlets 和 IBActions 重新出现并正常工作:
在 Xcode 中清理项目。
完全退出 Xcode。
删除 ~/Library/Developer/Xcode/DerivedData/ 的所有内容。
重启 MacOS 以防万一。
希望你能解决这个问题:)
【讨论】:
以上是关于从 Connections Inspector 中隐藏 Outlets 以获取自定义视图的主要内容,如果未能解决你的问题,请参考以下文章
从 Xcode Inspector 获取自定义颜色 RGB 代码 [重复]
Unity 从Inspector界面打开资源管理器选择并记录文件路径
jQuery 拖放后 CSS 未正确更新,但在 Inspector 中更新
Chrome HTML Inspector:复制原始源(而不是修改过的 DOM)