【问题标题】:Hide Outlets from Connections Inspector for Custom View从 Connections Inspector 中隐藏 Outlets 以获取自定义视图
【发布时间】:2015-08-21 14:40:48
【问题描述】:

我在 Swift 中使用nib 文件创建了一个自定义视图(数量视图)。我在自定义视图中创建了一些 IBOutletsIBActions(用于按钮、标签等)。

我尝试通过将类名分配给我的故事板中的UIView 来使用此自定义视图(数量视图)。 它显示了 Connections Inspector 中的所有 IBOutletsIBActions,如下图所示:

我只想为自定义视图显示 delegate

可能的答案:

我想我可以使用 -viewWithTag 而不是 Outlets 来获取视图。

但是,我想知道是否可以同时拥有 Outlets 或者是否有更好的方法来做到这一点?

处理这种情况的其他可能方法(最佳)是什么?

【问题讨论】:

  • 您已为您的属性和操作添加了 IBOutlet 属性。为什么不希望 Connections Inspector 显示它? IBOutlet 是 Connections Inspector 的开关。
  • @HarrisonXi:我的自定义视图非常复杂,我不想只通过编码来设计它,所以我使用单独的 xib 来设计它,但是为了访问我需要的其他 UI 组件在自定义视图类中采用IBOutlets,我也不想使用viewWithTag 方法。我只是想知道有没有其他方法。
  • 不,不可能隐藏 IBOutlets 和 IBAction Connections Inspector。如果您不想在 Connections Inspector 中显示,请从属性中删除 IBOutlet 关键字。

标签: ios objective-c iphone swift 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 重新出现并正常工作:

    1. 在 Xcode 中清理项目。

    2. 完全退出 Xcode。

    3. 删除 ~/Library/Developer/Xcode/DerivedData/ 的所有内容。

    4. 重启 MacOS 以防万一。

    希望你能解决这个问题:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      相关资源
      最近更新 更多