从另一个UIView打开UIView

时间:2017-07-11 01:29:45

标签: ios uiview swift3 uiviewcontroller modal-dialog

我有一个带有按钮的UIViewController,可以打开模态/弹出窗口(XIB)

我使用此代码:

let aView: myView1 = UINib(nibname: "AView", bundle : nil).instantitate(withOwner: self, options: nil)[0] as! myView1
aView.frame = self.view.frame
self.view.addSubView(aView)

Modal包含一个应该打开Form(另一个XIB)的按钮

我使用此代码:

let bView: myView2 = UINib(nibname: "BView", bundle : nil).instantitate(withOwner: self, options: nil)[0] as! myView2
bView.frame = self.view.frame
self.view.addSubView(bView)

但我得到编译时错误,说:

  

类型的价值' AView'没有会员'查看'

当我更改代码时:

self.view.addSubview(bView)

为:

self.addSubview(bView)

在UIView中使用上面的行时出现运行时错误:

  

此类不是键视图的键值编码兼容。

如果我将上述行重新定位到UIViewController,我会得到一个不同的错误:

  

无法将自我添加为子视图

是否有其他方法可以从另一个UIView打开UIView,而无需返回或更改UIViewController?

1 个答案:

答案 0 :(得分:0)

首先,我建议将班级名称从myView1更改为MyView1,与myView2相同。然后将您的nib文件file's owner从界面构建器设置为MyView1MyView1

在以下电话中将此withOwner: self更改为nil

let aView:myView1 = UINib(nibname: "AView", bundle : nil).instantitate(withOwner: self, options: nil)[0] as! myView1

OR

您可能需要从界面构建器中删除file's owner