【发布时间】:2017-12-14 21:22:58
【问题描述】:
我有一个 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 包含一个应该打开表单(另一个 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”类型的值没有成员“view”
当我更改代码时:
self.view.addSubview(bView)
到:
self.addSubview(bView)
在 UIView 中使用上述行时出现运行时错误:
这个类不符合键视图的键值编码。
如果我将上面的行重新定位到 UIViewController,我会得到一个不同的错误:
无法将自身添加为子视图
是否有其他方法可以从另一个 UIView 打开一个 UIView,而无需返回或更改 UIViewController?
【问题讨论】:
-
您是否有任何理由在
UIViews 上执行此操作,而不是使用完整的UIViewControllers 作为您的模态并使用present(viewController:animated:completion:)方法显示它们? -
我使用 XIB 编写了 UIView,这是唯一的原因。现在我使用 Storyboard 和 UIViewController 重写了整个事情,我没有遇到前面指定的问题。顺便说一句,编码兼容问题是由于出口参考损坏。
-
你也可以在 xibs 中拥有视图控制器。
标签: ios uiview swift3 uiviewcontroller modal-dialog