【问题标题】:Show UIView with xib on textFieldDidBeginEditing在 textFieldDidBeginEditing 上显示带有 xib 的 UIView
【发布时间】:2014-12-20 16:30:35
【问题描述】:

我使用 xib 制作了一个自定义 uiview 类,我希望能够使用 textFieldDidBeginEditing 在屏幕上显示它,但我似乎无法弄清楚。

在我的自定义视图中:

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    //Load the interface

    NSBundle.mainBundle().loadNibNamed("customNib", owner: self, options: nil)
    self.addSubview(self.view)
}


override init(frame: CGRect) {
    super.init(frame: frame)
}

我在 IB 中所做的工作是在我的界面中放置一个视图并将其链接到我的 customView 类。

现在,我想以编程方式使用自定义类显示此视图。

如果我在我的 textFieldDidBeginEditing 中执行此操作(我的主视图中有一个文本字段):

var myView: myCustomView = myCustomView(frame:CGRectMake(100, 100, 100, 100))
    myView.backgroundColor = UIColor.redColor()

self.view.addSubview(myView)

我在屏幕上看到一个红色方块,但它没有“加载”xib。

我问的不是好问题还是我做错了什么?你们能指出我正确的方向吗?

我在这里解决了所有类似的问题,但找不到解决方案。

【问题讨论】:

  • 如果您使用 xib 创建自定义视图,则必须使用此 NSBundle.mainBundle().loadNibNamed("customNib", owner: self, options: nil) 加载它,然后分配其框架,然后将其添加到子视图。这样做的结果是什么?
  • 你可以把这个答案作为你问题的答案而不是接受它......你永远不知道什么时候有人会犯同样的错误。

标签: ios swift uitextfield addsubview custom-view


【解决方案1】:

只是最愚蠢的事情,我用 init(frame) 初始化了 myView 并且没有将我的 xib 放在屏幕上。这有效:

override init(frame: CGRect) {
    super.init(frame: frame)

    NSBundle.mainBundle().loadNibNamed("customNib", owner: self, options: nil)
    self.addSubview(self.view)
}

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2016-10-12
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多