Swift:工具栏按钮没有反应
下面的屏幕有两个按钮的工具栏。他们有训练员。处理程序不是从按钮触发的。我尝试将处理程序分配给红色按钮,它就工作了。我需要帮助来找出错误 下面是我的代码:Swift:工具栏按钮没有反应,swift,uikit,Swift,Uikit,下面的屏幕有两个按钮的工具栏。他们有训练员。处理程序不是从按钮触发的。我尝试将处理程序分配给红色按钮,它就工作了。我需要帮助来找出错误 下面是我的代码: let toolbar: UIToolbar = { let tb = UIToolbar(frame: CGRect(x: 0, y: 0, width: 10, height: 10)) tb.isUserInteractionEnabled = true let doneButton = UIBarButtonI
let toolbar: UIToolbar = {
let tb = UIToolbar(frame: CGRect(x: 0, y: 0, width: 10, height: 10))
tb.isUserInteractionEnabled = true
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(choosen))
let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelSelection))
tb.items = [doneButton, cancelButton]
tb.translatesAutoresizingMaskIntoConstraints = false
return tb
}()
override func viewDidLoad() {
super.viewDidLoad()
let but = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
but.addTarget(self, action: #selector(cancelSelection), for: .touchUpInside)
but.backgroundColor = .red
self.view.addSubview(but)
self.view.obscure()
weightPicker.addSubview(toolbar)
toolbar.leadingAnchor.constraint(equalTo: weightPicker.leadingAnchor).isActive = true
toolbar.trailingAnchor.constraint(equalTo: weightPicker.trailingAnchor).isActive = true
toolbar.heightAnchor.constraint(equalToConstant: 50).isActive = true
toolbar.topAnchor.constraint(equalTo: weightPicker.topAnchor).isActive = true
self.view.addSubview(weightPicker)
weightPicker.delegate = self
weightPicker.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
weightPicker.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
weightPicker.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.5).isActive = true
weightPicker.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
}
@objc func choosen() {
print(123)
self.dismiss(animated: true, completion: nil)
}
@objc func cancelSelection() {
print(123)
self.dismiss(animated: true, completion: nil)
}
您好,在您的操作中,尝试在函数名之前添加控制器类的名称
#selector('here.cancelSelection)
,或者执行此操作#selector(self.cancelSelection)
尝试使用lazy我认为问题在于您使用self
lazy var toolbar: UIToolbar = {
let tb = UIToolbar(frame: CGRect(x: 0, y: 0, width: 10, height: 10))
tb.isUserInteractionEnabled = true
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.choosen))
let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(self.cancelSelection))
tb.items = [doneButton, cancelButton]
tb.translatesAutoresizingMaskIntoConstraints = false
return tb}()
在UIPickerView中添加UIToolbar时,似乎出现了一些问题。您可以添加一些容器视图:
override func viewDidLoad() {
super.viewDidLoad()
let containerView = UIView()
containerView.translatesAutoresizingMaskIntoConstraints = false
weightPicker.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(containerView)
containerView.addSubview(toolbar)
containerView.addSubview(weightPicker)
NSLayoutConstraint.activate([
containerView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
containerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
containerView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
containerView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5),
toolbar.topAnchor.constraint(equalTo: containerView.topAnchor),
toolbar.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
toolbar.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
toolbar.heightAnchor.constraint(equalToConstant: 50.0),
weightPicker.topAnchor.constraint(equalTo: toolbar.bottomAnchor),
weightPicker.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
weightPicker.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
weightPicker.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
])
}
您确定没有忘记添加
@objc func choosen()
和@objc func cancelSelection()
?确定。编译器修复了这个问题。。当您创建按钮并将其添加到viewDidLoad中的工具栏时,我有一个问题。没有问题吧?我已经尝试过了。不,反应:(.我认为工具栏不允许访问按钮,但是,我不知道如何检查它似乎不可能只将工具栏添加到视图-编译器将触发错误您收到了什么错误?我已经在Xcode 9.0上测试了这一点,它正在工作。我找到了其他解决方案。我创建了视图并在其上放置了按钮。然后我将此视图放在p的顶部icker.我怀疑你的解决方案是否有效,因为我知道工具栏应该链接到texfield。你能发给我吗leonif1@gmail.com?我会检查。谢谢;)这是你的要点。只需将它添加到游乐场进行测试。你是最好的!!!我根据我的情况进行了更改,它可以工作。为什么我不能在self.view上添加工具栏并将其用作容器?