我正在创建一个应用程序,其中一个选项卡是用户可以写东西的留言簿。我使用 UIAlertController 弹出一个窗口,其中包含用于输入名称的文本字段和用于输入消息的文本视图。我想默认禁用“发布”按钮,然后在名称字段至少有 2 个字符且消息至少有 3 个字符后启用它。我已经通过
#1:在顶部声明“Post” UIAlertAction
let saveAction = UIAlertAction(title:"Post", style: .default, handler: { (action) -> Void in print(data) })
上面的行给出了错误(不能在属性初始化器中使用实例成员“数据”;属性初始化器在 self 可用之前运行。)
#2:在警报中添加这个“发布”按钮并使其禁用
alert.addAction(saveAction)
saveAction.isEnabled = false
#3 添加两个函数来检测textfield和textview中有多少单词,如果符合要求,启用“发布”按钮
func textViewDidChange(_ textView: UITextView) { //Handle the text changes here
GuestbookContentWordCount = textView.text.count
data["content"] = textView.text
enableSave()
}
@objc func textFieldDidChange(_ textField: UITextField) {
GuestbookNameWordCount = textField.text?.count ?? 0
data["name"] = textField.text
enableSave()
}
func enableSave () {
if GuestbookContentWordCount >= 3 && addGuestbookNameWordCount >= 2 {
saveAction.isEnabled = true
} else {
saveAction.isEnabled = false
}
}
理想的情况是,当满足要求,用户点击“发布”按钮时,我将获取数据[“名称”]和数据[“内容”]并将其插入数据库。现在我已经让它工作到在满足要求后启用“发布”按钮,但是当尝试获取数据时它给出错误“不能在属性初始化器中使用实例成员'数据';属性初始化器在 self 可用之前运行。
你能建议如何解决这个问题吗?谢谢你。