我正在尝试this Apple tutorial,但我发现了一个错误。有人能帮我吗?
当用户未输入项目名称时禁用保存
如果用户试图保存没有名字的餐,会发生什么?因为MealViewController上的meal属性是可选的,如果没有名称,您将初始化程序设置为失败,Meal对象不会被创建并添加到膳食列表中 - 这是您期望发生的。但是,您可以更进一步,让用户在输入餐饮名称时禁用“保存”按钮,并在让他们关闭键盘之前检查他们是否指定了有效名称,以防止用户意外添加没有名字的餐点
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
// Configure the destination view controller only when the save button is pressed.
guard let button = sender as? UIBarButtonItem, button === saveButton else {
if #available(iOS 10.0, *) {
os_log("The save button was not pressed, cancelling", log: OSLog.default, type: .debug)
} else {
// Fallback on earlier versions.
}
return
}
let name = nameTextField.text ?? ""
let photo = photoImageView.image
let rating = ratingControl.rating
// Set the meal to be passed to MealTableViewController after the unwind segue.
meal = Meal(name: name, photo: photo, rating: rating)
}
答案 0 :(得分:1)
您可能对saveButton
属性声明有疑问。它应该输入UIBarButtonItem
(而不是(UIBarButtonItem) -> Void
,因为您的错误显示)。
为安全起见,请尝试重复Apple教程中的将“保存”按钮连接到MealViewController代码步骤。