UIButton 选择器不起作用

Osa*_*eem 5 button uiview uinavigationcontroller ios swift

我有一个视图作为 navigationController 的子视图放置,以填充整个显示。在此视图上,我有一个带有两个按钮的子视图。“删除并完成”。然后它还有一个日期选择器。datePicker 可以工作,但是,Remove 和 Done 按钮不会触发操作函数。

按钮:

 var setButton: UIButton = {
   var button = UIButton(type: .system)
    button.setTitle("Done", for: .normal)

    button.tintColor = .white
    button.addTarget(self, action: #selector(handleReminderSetBtn), for: .touchUpInside)

    return button
}()

var cancelButton: UIButton = {
    var button = UIButton(type: .system)
    button.setTitle("Remove", for: .normal)
    button.tintColor = .white
    button.addTarget(self, action: #selector(handleReminderCancelBtn), for: .touchUpInside)

    return button
}()
Run Code Online (Sandbox Code Playgroud)

导航控制器中的主要 blackView:

   viewOverLay.addSubview(cardreminder1)

   viewOverLay.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height)

   viewOverLay.backgroundColor = UIColor.black.withAlphaComponent(0.3)
   self.navigationController?.view.addSubview(viewOverLay)
Run Code Online (Sandbox Code Playgroud)

CardReminder1 是 UIView,我有两个按钮。

在此输入图像描述

我认为这两个按钮的 addTarget 方法中的目标存在一些问题。可能是什么问题?

And*_*ini 2

你不应该初始化setButtoncancelButton这种方式初始化。

\n\n

引用Apple文档Setting a Default Property Value with a Closure or Function

\n\n
\n

如果您使用闭包来初始化属性,请记住在执行闭包时实例的其余部分尚未初始化。这意味着您无法从闭包中访问任何其他属性值,即使这些属性具有默认值。\n 此外:

\n
\n\n

您也不能使用隐式 self 属性,或调用任何 instance\xe2\x80\x99s 方法,因此问题在这里:

\n\n
addTarget(self...)\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,要解决此问题,您应该在完全初始化addTarget后移动按钮初始化(或移动 ) 。CardReminder1

\n

  • 答对了!多谢!:) (2认同)