iOS 应用程序中所有视图控制器的相同按钮

问题描述 投票:0回答:3

我正在开发一个具有 10 个视图控制器的应用程序,其中包括 2 个 Web 视图控制器。每个视图控制器在右上角都包含一个“发送反馈”按钮,具有完全相同的样式和功能。 现在,我正在每个视图控制器中为按钮编写完全相同的代码。 我想知道是否有一种方法只在一个地方编写该方法并将其用于所有按钮,因为功能是相同的。 我正在使用 swift 3。

ios swift swift3 uibutton viewcontroller
3个回答
4
投票

创建视图控制器的新子类:

class SendFeedbackViewController: UIViewController {
    @IBOutlet weak var sendFeedbackButton: UIButton!

    @IBAction func sendFeedback() {
        /* do whatever you need */
    }
}

然后从这个新的视图控制器中继承所有视图控制器:

class YourViewController: SendFeedbackViewController {
    /* your entire logic */
}

在情节提要中设置类类型: enter image description here

现在您可以连接发送反馈按钮插座和操作: enter image description here enter image description here


2
投票

使用UIViewController的扩展。

extension UIViewController {
   func sendFeedBack() {
     //write your code here
   }
}

并从任何 ViewController 调用。


0
投票

你可以按照这个。我的项目的新需求,需要在所有视图控制器上显示 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.
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.