在 textFieldDidBeginEditing 上显示带有 xib 的 UIView
Posted
技术标签:
【中文标题】在 textFieldDidBeginEditing 上显示带有 xib 的 UIView【英文标题】:Show UIView with xib on textFieldDidBeginEditing 【发布时间】: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)
加载它,然后分配其框架,然后将其添加到子视图。这样做的结果是什么?
你可以把这个答案作为你问题的答案而不是接受它......你永远不知道什么时候有人会犯同样的错误。
【参考方案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)
【讨论】:
以上是关于在 textFieldDidBeginEditing 上显示带有 xib 的 UIView的主要内容,如果未能解决你的问题,请参考以下文章
在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?