我正在开发一个具有 10 个视图控制器的应用程序,其中包括 2 个 Web 视图控制器。每个视图控制器在右上角都包含一个“发送反馈”按钮,具有完全相同的样式和功能。 现在,我正在每个视图控制器中为按钮编写完全相同的代码。 我想知道是否有一种方法只在一个地方编写该方法并将其用于所有按钮,因为功能是相同的。 我正在使用 swift 3。
创建视图控制器的新子类:
class SendFeedbackViewController: UIViewController {
@IBOutlet weak var sendFeedbackButton: UIButton!
@IBAction func sendFeedback() {
/* do whatever you need */
}
}
然后从这个新的视图控制器中继承所有视图控制器:
class YourViewController: SendFeedbackViewController {
/* your entire logic */
}
使用UIViewController的扩展。
extension UIViewController {
func sendFeedBack() {
//write your code here
}
}
并从任何 ViewController 调用。
你可以按照这个。我的项目的新需求,需要在所有视图控制器上显示 WhatsApp 按钮。
正如上面的答案,你应该创建一个 BaseViewController 类,它是 UIViewController 的子类,您可以像这样创建按钮。
class BaseViewControllerUser: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
addWhatsAppButton()
}
func addWhatsAppButton() {
// Create the button
let whatsappButton = UIButton(type: .custom)
whatsappButton.translatesAutoresizingMaskIntoConstraints = false
whatsappButton.setImage(UIImage(named: "ic_whatsapp"), for: .normal) // Replace with your WhatsApp icon image
whatsappButton.addTarget(self, action: #selector(whatsappButtonTapped), for: .touchUpInside)
// Add button to the view
view.addSubview(whatsappButton)
// Set constraints for the button (adjust position as needed)
NSLayoutConstraint.activate([
whatsappButton.widthAnchor.constraint(equalToConstant: 60), // Set width
whatsappButton.heightAnchor.constraint(equalToConstant: 60), // Set height
whatsappButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -16), // 16 points from trailing edge
whatsappButton.bottomAnchor.constraint(equalTo: view.centerYAnchor, constant: 0) // 100 points from bottom
])
}
@objc func whatsappButtonTapped() {
//Perform your action on this button.
}
}