我正在寻求以UIView
的形式构建自定义错误消息。我想在我的应用中为每个UIView
使用此UIViewController
。显然,我不想为每个屏幕都重新创建它,因此我正在寻找“共享”它的最佳解决方案。
将其创建为UIViewController
并以这种方式添加它会更好,还是有更好的方法?
答案 0 :(得分:3)
UIView实例只能在一个地方使用。它们只能有一个superview
,因此不能同时在多个视图层次结构中使用。
如果您更改视图的superview
,则实际上将移动视图。
我认为有两种可能性:
答案 1 :(得分:1)
是的,请使用ViewController,它比简单的视图要好。您的消息中可能包含按钮之类的操作。
为避免过多的代码重复,您可以使用mixin:
long
并在每个希望显示错误的视图控制器中实现协议。
protocol ErrorDisplay {
func display(_ error: Error)
}
extension ErrorDisplay where Self: UIViewController {
func display(_ error: Error) {
let viewController = ErrorViewController(error: error)
// You could also add it as a child view controller rather than presenting it,
// if you want to add its view in the current hierarchy
present(viewController, animated: true, completion: nil)
}
}
答案 2 :(得分:1)
如果您希望当时始终在屏幕上显示的视图,可以使用窗口显示视图。
窗口是屏幕上显示的所有视图的根,窗口始终存在,因此一旦在窗口中添加了视图,该视图就会一直存在于屏幕中。
只需使用以下代码即可将视图添加到窗口
let window = UIApplication.shared.keyWindow!
let v = UIView(frame: CGRect(x: window.frame.origin.x, y: window.frame.origin.y, width: window.frame.width, height: window.frame.height))
window.addSubview(v);
答案 3 :(得分:0)
对于这个问题,我希望您创建一个 UIView 类,并且可以在viewController中重用它。为此,请按照以下步骤操作,
BroadcastReceiver