要编写自定义委托以从UIView类中使用pushViewController,可以按照以下步骤进行:
protocol PushViewControllerDelegate: class {
func pushViewController(viewController: UIViewController)
}
weak var pushViewControllerDelegate: PushViewControllerDelegate?
func buttonTapped() {
// 创建要推送的视图控制器
let newViewController = UIViewController()
// 调用委托方法将新视图控制器推入导航控制器的堆栈中
pushViewControllerDelegate?.pushViewController(viewController: newViewController)
}
class ViewController: UIViewController, PushViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// 设置委托
let customView = CustomView()
customView.pushViewControllerDelegate = self
}
// 实现委托方法
func pushViewController(viewController: UIViewController) {
navigationController?.pushViewController(viewController, animated: true)
}
}
这样,当在UIView子类中调用buttonTapped方法时,会触发委托方法,将新的视图控制器推入导航控制器的堆栈中。