Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 工具栏中的“完成”按钮问题_Ios_Uitoolbar_Cancel Button - Fatal编程技术网

Ios 工具栏中的“完成”按钮问题

Ios 工具栏中的“完成”按钮问题,ios,uitoolbar,cancel-button,Ios,Uitoolbar,Cancel Button,我添加了一个带有“完成”和“取消”按钮的工具栏,一切正常。突然,“完成”和“取消”文本被隐藏。按钮存在且可单击,但没有文本。除了同样的问题,我什么都试过了 以下是有关工具栏的代码: func createDatePicker(){ //format for datepicker display datePicker.datePickerMode = .date datePicker.minimumDate = Date() datePicker.backgroun

我添加了一个带有“完成”和“取消”按钮的工具栏,一切正常。突然,“完成”和“取消”文本被隐藏。按钮存在且可单击,但没有文本。除了同样的问题,我什么都试过了

以下是有关工具栏的代码:

func createDatePicker(){
    //format for datepicker display
    datePicker.datePickerMode = .date
    datePicker.minimumDate = Date()
    datePicker.backgroundColor = UIColor.white

    // ToolBar
    let toolBar = UIToolbar()
    toolBar.barStyle = UIBarStyle.default
    toolBar.isTranslucent = true
    toolBar.backgroundColor = UIColor(red: 253/255, green: 184/255, blue: 20/35, alpha: 1.0)

    //datePicker.tintColor = UIColor.blue
    toolBar.tintColor = UIColor.blue
    toolBar.sizeToFit()
    toolBar.isUserInteractionEnabled = true
    //add a done button on this toolbar

    let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneClicked))
    let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelClicked))
    toolBar.setItems([cancelButton,spaceButton,doneButton], animated: true)
    testfield.inputAccessoryView = toolBar
    testfield.inputView = datePicker

    self.view.addSubview(testfield)
}
这就是结果:


这是我根据您的代码使用的代码,它对我来说非常好

import UIKit

class ViewController: UIViewController {

    var datePicker = UIDatePicker()
    var testfield: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        createDatePicker()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    func createDatePicker(){
        // TextField
        testfield = UITextField(frame: CGRect(x: 20, y: 100, width: 300, height: 40))
        testfield.placeholder = "testfiled"
        self.view.addSubview(testfield)

        //format for datepicker display
        datePicker.datePickerMode = .date
        datePicker.minimumDate = Date()
        datePicker.backgroundColor = UIColor.white

        // ToolBar
        let toolBar = UIToolbar()
        toolBar.barStyle = UIBarStyle.default
        toolBar.isTranslucent = true
        toolBar.backgroundColor = UIColor(red: 253/255, green: 184/255, blue: 20/35, alpha: 1.0)

        //datePicker.tintColor = UIColor.blue
        toolBar.tintColor = UIColor.blue
        toolBar.sizeToFit()
        toolBar.isUserInteractionEnabled = true
        //add a done button on this toolbar

        let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneClicked))
        let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
        let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelClicked))
        toolBar.setItems([cancelButton,spaceButton,doneButton], animated: true)
        testfield.inputAccessoryView = toolBar
        testfield.inputView = datePicker

    }

    @objc func doneClicked(){

    }
    @objc func cancelClicked(){

    }

}
请尝试在设备和模拟器上进行测试 或者在构建之前尝试clean(shift+cmd+k)项目,这在大多数情况下都有帮助

结果


我通过将图像添加到“完成”和“取消”按钮来解决问题

let DonebuttonIcon = UIImage(named: "done-calender.png")
    let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(doneClicked))
    doneButton.image = DonebuttonIcon
    doneButton.tintColor = UIColor.gray

    let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)

    let CancelbuttonIcon = UIImage(named: "cancel-calender.png")
    let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.done, target: self, action: #selector(cancelClicked))
    cancelButton.image = CancelbuttonIcon
    cancelButton.tintColor = UIColor.gray

我在我的项目之外尝试了这段代码,效果很好。。。然后我在我的项目中添加了另一个VC代码,但仍然存在相同的问题。。。我的项目中有一些问题导致了此问题,但我无法找出我认为还有其他一些问题阻碍了此问题的出现。我可以要求您共享此项目吗?完全或部分取决于您的方便程度。我通过以下方法解决了此问题:,,,创建自定义点,,,,,,将图像添加到按钮(请参阅我的评论)我很高兴它部分地解决了您的问题,但这并不是您问题的解决方案,我想找出导致实际问题的原因,因为它也可能发生在您的代码库的其他地方。您可以使用层次结构检查器尝试找出按钮的位置:遵循以下步骤→