ios - 使用 sambag 时间选择器时出现问题

标签 ios swift

我正在使用 sambag 时间选择器 Controller ,我在 sambag picker 方法的按钮上设置了时间,但问题是我在一个 View Controller 中有多个按钮,所以我在设置时为每个设置时间方法都做了这个按钮所有按钮标题都改变我想要的是只改变我按下的按钮的值

在这里,我将向您展示我的尝试,我将向您展示我的代码

   import UIKit

   class ManageHoursViewController: UIViewController {

     var theme: SambagTheme = .light

    var result : String!
    @IBOutlet weak var btnMonStartTime: UIButton!
    @IBOutlet weak var btnMonEndTime: UIButton!
    @IBOutlet weak var btnMonOff: UIButton!
    @IBOutlet weak var btnMonOn: UIButton!


    override func viewDidLoad() {
        super.viewDidLoad()
        round()

        let hh2 = (Calendar.current.component(.hour, from: Date()))
        let mm2 = (Calendar.current.component(.minute, from: Date()))
        print(hh2)
        print(mm2)
        let dateTime = "\(hh2) : \(mm2)"
        btnMonStartTime.setTitle("\(dateTime)", for: .normal)
        btnMonEndTime.setTitle("\(dateTime)", for: .normal)
        // Do any additional setup after loading the view.
    }

    func round(){

        btnMonOff.isHidden = true
        btnMonStartTime.layer.cornerRadius = btnMonStartTime.frame.height / 2
        btnMonStartTime.layer.shadowColor = UIColor(red: 154/255, green: 154/255, blue: 154/255, alpha: 1).cgColor
        btnMonStartTime.layer.shadowOffset = CGSize(width: 0, height: 1)
        btnMonStartTime.layer.shadowOpacity = 1.0
        btnMonStartTime.layer.shadowRadius = 2.0
        btnMonStartTime.layer.masksToBounds = false

        btnMonEndTime.layer.cornerRadius = btnMonEndTime.frame.height / 2
        btnMonEndTime.layer.shadowColor = UIColor(red: 154/255, green: 154/255, blue: 154/255, alpha: 1).cgColor
        btnMonEndTime.layer.shadowOffset = CGSize(width: 0, height: 1)
        btnMonEndTime.layer.shadowOpacity = 1.0
        btnMonEndTime.layer.shadowRadius = 2.0
        btnMonEndTime.layer.masksToBounds = false
    }

    @IBAction func btnMonStartTimeTapped(_ sender: UIButton) {
        let vc = SambagTimePickerViewController()
        vc.theme = theme
        vc.delegate = self
        present(vc, animated: true, completion: nil)
    }
    @IBAction func btnMonEndTimeTapped(_ sender: UIButton) {
        let vc = SambagTimePickerViewController()
        vc.theme = theme
        vc.delegate = self
        present(vc, animated: true, completion: nil)
    }
}
extension ManageHoursViewController : SambagTimePickerViewControllerDelegate {

    func sambagTimePickerDidSet(_ viewController: SambagTimePickerViewController, result: SambagTimePickerResult) {
        self.result = "\(result)"
        print(self.result)
        btnMonStartTime.setTitle(self.result, for: .normal)
        btnMonEndTime.setTitle(self.result, for: .normal)
        viewController.dismiss(animated: true, completion: nil)
    }

    func sambagTimePickerDidCancel(_ viewController: SambagTimePickerViewController) {
        viewController.dismiss(animated: true, completion: nil)
    }
}

我想当星期一开始时间按钮按下然后我选择时间表单选择器然后只有星期一开始时间按钮值更改现在所有按钮值都更改

最佳答案

您可以创建一个 var 来跟踪最后一次点击

 var lastBu: UIButton!


    @IBAction func btnMonStartTimeTapped(_ sender: UIButton) {
        let vc = SambagTimePickerViewController()
        vc.theme = theme
        vc.delegate = self
        lastBu = sender
        present(vc, animated: true, completion: nil) 
    }
    @IBAction func btnMonEndTimeTapped(_ sender: UIButton) {
        let vc = SambagTimePickerViewController()
        vc.theme = theme
        vc.delegate = self
        lastBu = sender
        present(vc, animated: true, completion: nil)
    }

关于ios - 使用 sambag 时间选择器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53945267/

相关文章:

swift - Xcode - 第一次查看容器 View 时初始约束发生变化

swift - 如何使用异步方法遍历数组,并以正确的顺序将返回值放入数组中

ios - Facebook FQL获取 friend 发布的所有帖子并使用App

ios - 类型 'AppDelegate' 的值没有成员 'manageObjectContext'

ios - 如何根据情况使用户无法访问主页中的选项卡栏

ios - 如何将 NSMutableArray 值共享给 MFMailComposeViewController

ios - 如何保存图像和其上绘制的线条的组合? swift

ios - 如何在 swift iOS 应用程序中创建简单的播放器

swift - 在 tvos 中播放系统声音 [swift]

objective-c - 一次触摸两个 uitextview 时崩溃