【发布时间】:2017-04-04 13:47:28
【问题描述】:
如何创建一个通用的弹出视图控制器,它可以被具有不同数据的多个视图控制器调用。 我创建了一个带有标签和按钮的 popupviewcontroller 类。 标签和按钮将根据来自不同视图控制器的调用具有不同的文本。 简而言之,创建可供多个视图控制器使用的通用弹出视图的正确可行方法是什么
class CustomPopUpViewController: UIViewController{
@IBOutlet weak var vWCustomSubVw: UIView!
@IBOutlet weak var lblHeadingText: UILabel!
@IBOutlet weak var lblDescription: UILabel!
@IBOutlet weak var btnCustom: UIButton!
var strLblHeadingText = String() // string for heading label
var strLblDescription = String() // string for description label
var strBtnCustom = String()// string for custom button
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.black.withAlphaComponent(0.2)
self.showAnimate()
lblHeadingText.text = strLblHeadingText
lblDescription.text = strLblDescription
btnCustom .setTitle(strBtnCustom, for: UIControlState.normal)
}
func showAnimate()
{
self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
self.view.alpha = 0.0;
UIView.animate(withDuration: 0.25, animations: {
self.view.alpha = 1.0
self.view.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
});
}
func removeAnimate()
{
UIView.animate(withDuration: 0.25, animations: {
self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
self.view.alpha = 0.0;
}, completion:{(finished : Bool) in
if (finished)
{
self.view.removeFromSuperview()
}
});
}
}
我从另一个视图控制器中调用它,如下所示:-
func btnInfoTapped(){
let customPopUpVC = UIStoryboard(name: "Course", bundle: nil).instantiateViewController(withIdentifier: "CustomPopUpViewController") as! CustomPopUpViewController
self.addChildViewController(customPopUpVC)
customPopUpVC.view.frame = self.view.frame
self.view.addSubview(customPopUpVC.view)
customPopUpVC.didMove(toParentViewController: self)
}
所以我想让它通用,说它是一个全局方法或从不同视图控制器调用同一类的东西
【问题讨论】:
-
欢迎来到 SO。您会发现,如果添加代码示例,通常会得到更好的响应。即使代码写得不好。你说你创建了一个类,作为例子添加。
-
你可以试试这个 pod (github.com/huynguyencong/EzPopup)。显示弹出任何控制器是通用的
标签: ios swift swift3 xcode8 xcode-storyboard