![](/img/trans.png)
[英]How to navigate to TabBar ViewController on click of button on popover ViewController in swift?
[英]Navigate to viewController when programmatically created button click in swift
我正在使用 swift 创建一个框架模块。 需要在点击按钮时弹出警报或 ViewController。 按钮正在以编程方式创建。 当前按钮正在显示,但操作不起作用。 下面是代码。
在框架类中
public class CreateAdminMenu {
let alertVC = AlertView()
public init() {
}
public func createMenuItem(itemTitle: String) -> UIButton{
let menuItem = UIButton(type: .system)
menuItem.frame = CGRect(x: 30, y: 30, width: 150, height: 100)
menuItem.backgroundColor = .blue
menuItem.setTitle(itemTitle, for: .normal)
menuItem.addTarget(self, action: #selector(menuItem_touchUpInside(sender:)), for: UIControl.Event.touchDown)
return menuItem
}
@IBAction func menuItem_touchUpInside(sender: UIButton) {
print("Menu Item tapped")
alertVC.showAlert()
}
}
class AlertView: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//self.showAlert()
}
func showAlert() {
let alert = UIAlertController(title: "Test Item", message: "button tapped", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
}
在 App 中,ViewController
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let menu = CreateAdminMenu()
let item = menu.createMenuItem(itemTitle: "Test Item 1")
view.addSubview(item)
}
}
我错过了什么?
IBAction
。AlertView
而无需在ViewController
添加/嵌入它。UIAlertController
。 public class CreateAdminMenu {
public init() {
}
public func createMenuItem(itemTitle: String) -> UIButton {
let menuItem = UIButton(type: .system)
menuItem.frame = CGRect(x: 30, y: 30, width: 150, height: 100)
menuItem.backgroundColor = .blue
menuItem.setTitle(itemTitle, for: .normal)
return menuItem
}
}
class AlertView {
func showAlert() -> UIAlertController {
let alert = UIAlertController(title: "Test Item", message: "button tapped", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
return alert
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let menu = CreateAdminMenu()
let item = menu.createMenuItem(itemTitle: "Test Item 1")
item.addTarget(self, action: #selector(menuItem_touchUpInside(sender:)), for: UIControl.Event.touchDown)
view.addSubview(item)
}
@IBAction func menuItem_touchUpInside(sender: UIButton) {
let alert = AlertView()
self.present(alert.showAlert(), animated: true, completion: nil)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.