【问题标题】:How to add a custom UIControl class in storyboard?如何在情节提要中添加自定义 UIControl 类?
【发布时间】:2014-10-30 23:02:07
【问题描述】:

我有一个要在我的故事板中使用的自定义 UIControl 类。我遇到了问题,因为 Storyboard 控制台的对象库中没有 UIControl。

我尝试添加一个 UIView 并将我的自定义 UIControl 类分配给它,但它似乎没有注册控件使用所需的事件(值已更改、内部触摸拖动、内部触摸向上)。

在调试时,我对与事件相关的操作进行了断点,看起来它们甚至没有被调用。

如何在我的故事板中正确使用我的自定义 UIControl 类?

【问题讨论】:

    标签: ios objective-c swift storyboard uicontrol


    【解决方案1】:

    您做得对 - 将 UIView 拖放到您的故事板上并在 Identity Inspector 中分​​配类。不要忘记在自定义类中覆盖initWithCoder:aDecoder

    【讨论】:

    • 您好,感谢您的回复。只是确保我做对了,你能确认我做这一步对吗? - 转到 Identity Inspector 并将类更改为我的自定义 UIControl 类。在那之后......我会在initWithDecoder:aDecoder 中做什么来指向那个故事板对象?
    • 我在处理 .xib 文件时做过类似的事情,但由于这是在故事板上,我不确定如何加载特定视图,以及是否需要任何类型的 ID在情节提要中分配它
    • @christopher.ryan.cruz 在initWithDecoder 中,您将执行您通常在initWithFrame 中执行的任何操作,因为initWithFrame 不会在放入故事板的视图中被调用。
    • 我不确定您所说的“加载特定视图”是什么意思。该视图将作为情节提要取消归档的一部分自动加载。
    • 感谢您的出色回答。请注意,您不必绝对也不一定必须使用initWithDecoder。首先,您不一定需要任何特别的设置;如果不需要,请不要使用它。其次,pair required init?(coder decoder: NSCoder) / override init(frame:CGRect) 在 Swift 中很有用。第三,awakeFromNib 可能是一个不错的选择(假设您正常使用情节提要)。不幸的是,IBDesignable 参与其中;使用自定义控件,您总是使用它。这是一个棘手的问题!一些讨论:stackoverflow.com/a/37444957/294884
    【解决方案2】:

    好的, 所以正如我最近发现的那样,每当我们需要通过一些第三方库使用自定义控件时, 我们必须做:- 以 TwicketSegmentedControl UIControl 类为例,需要通过 Interface Builder 将其添加到您的项目中,然后:-

    1. Drag UIView to your Design file 
    2. Replace default  'class name' in Identity Inspector of this Control from UIView to 
       TwicketSegmentedControl
    
    3.(Important step) Also Assign 'Module Name' below 'class name'  in Identity Inspector to TwicketSegmentedControl.
    

    就是这样。完成。

    现在在您的文件中使用 IBOUlet 访问它。

    另外,对于任何进一步的问题,如果需要调试代码,请检查是否在库文件中调用了 -initWithCoder。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多