如何将使用 imagepicker 上传的照片另存为新照片post?
How to save the photo you uploaded with imagepicker as a new post?
我有一个 tableView
和 viewController
。我需要添加带有图像选择器的照片(我已经这样做了),然后我需要将其作为新的 post 描述保存在我的 tableView 中。最好的方法是什么?
我已经在 tableView
中找到了如何将文本添加为新单元格的信息,但这不是我想要的。
这是我的代码
@IBAction func photoButton(_ sender: UIButton){
let vc = UIImagePickerController()
vc.sourceType = .photoLibrary //PHPpicker
vc.delegate = self
vc.allowsEditing = true
present(vc,animated: true)
}
@IBAction func saveButtonPressed(_ sender: UIButton){
}
extension NewPostScreenController : UIImagePickerControllerDelegate , UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
UIImagePickerController.InfoKey(rawValue: "")
if let image = info[UIImagePickerController.InfoKey(rawValue: "UIImagePickerControllerEditedImage")] as? UIImage {
ChangeImage.image = image
}
picker.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
}
我应该添加什么到 saveButtonPressed
?
我的建议是确保将问题分解成多个部分。您的解决方案可能至少需要以下几点:
- 您需要一个 delegate/protocol 方法来将 UIPickerView 获得图像的信号发回给 tableView。然后您需要将该图像以某种方式传递回 tableView。
- 在分配给 tableView 的 TableViewDataSource 中,您需要接收信号并对其进行处理:
- 您可能需要包含 UIImageView 子视图或 UIImage 属性 的 UITableViewCell 的子class。有很多方法可以解决这个问题,但最简单的方法可能是在故事板中使用原型单元并执行自动布局 + 连接插座。其他可能性是创建一个带有 xib 的 CocoaTouch class 并在您的 cellForRowAt 函数中调用它。
- 您需要在 TableViewDelegate 的 cellForRowAt 中的自定义 UITableViewCell 中设置 UIImage
- 当您收到收到新图像的信号时,您可能需要在委托函数中调用 tableView.reloadTable,以便在用户完成后重新加载。
请记住,您需要在 tableView 中实现一个 UITableViewCell 来显示 posts。
现在,要保存 post 并且关闭应用程序时不会删除这些内容,我建议使用 UserDefaults 或 Core Data 仅在您的 phone 中保存 post,或者使用 Firebase 将 post 保存在数据云中。
使用 firebase,您无需编写服务器代码即可保存数据。
Firebase 页面
https://firebase.google.com
我有一个 tableView
和 viewController
。我需要添加带有图像选择器的照片(我已经这样做了),然后我需要将其作为新的 post 描述保存在我的 tableView 中。最好的方法是什么?
我已经在 tableView
中找到了如何将文本添加为新单元格的信息,但这不是我想要的。
这是我的代码
@IBAction func photoButton(_ sender: UIButton){
let vc = UIImagePickerController()
vc.sourceType = .photoLibrary //PHPpicker
vc.delegate = self
vc.allowsEditing = true
present(vc,animated: true)
}
@IBAction func saveButtonPressed(_ sender: UIButton){
}
extension NewPostScreenController : UIImagePickerControllerDelegate , UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
UIImagePickerController.InfoKey(rawValue: "")
if let image = info[UIImagePickerController.InfoKey(rawValue: "UIImagePickerControllerEditedImage")] as? UIImage {
ChangeImage.image = image
}
picker.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
}
我应该添加什么到 saveButtonPressed
?
我的建议是确保将问题分解成多个部分。您的解决方案可能至少需要以下几点:
- 您需要一个 delegate/protocol 方法来将 UIPickerView 获得图像的信号发回给 tableView。然后您需要将该图像以某种方式传递回 tableView。
- 在分配给 tableView 的 TableViewDataSource 中,您需要接收信号并对其进行处理:
- 您可能需要包含 UIImageView 子视图或 UIImage 属性 的 UITableViewCell 的子class。有很多方法可以解决这个问题,但最简单的方法可能是在故事板中使用原型单元并执行自动布局 + 连接插座。其他可能性是创建一个带有 xib 的 CocoaTouch class 并在您的 cellForRowAt 函数中调用它。
- 您需要在 TableViewDelegate 的 cellForRowAt 中的自定义 UITableViewCell 中设置 UIImage
- 当您收到收到新图像的信号时,您可能需要在委托函数中调用 tableView.reloadTable,以便在用户完成后重新加载。
请记住,您需要在 tableView 中实现一个 UITableViewCell 来显示 posts。
现在,要保存 post 并且关闭应用程序时不会删除这些内容,我建议使用 UserDefaults 或 Core Data 仅在您的 phone 中保存 post,或者使用 Firebase 将 post 保存在数据云中。 使用 firebase,您无需编写服务器代码即可保存数据。
Firebase 页面 https://firebase.google.com