我正在制作一个简单的绘图应用程序,当我按下保存按钮时,我试图将我的绘图保存在tableview中。我使用UIImageView允许用户绘图。这是使用NSUserdefaults保存图像的正确方法吗?如何将其保存在表格视图中?谢谢!这是我放入保存按钮的代码:
@IBAction func saveButton(sender: AnyObject) {
self.navigationController?.popToRootViewControllerAnimated(true)
self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.toolbarHidden = false
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0.0)
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let data = UIImagePNGRepresentation(image)
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject(data, forKey: "drawing")
userDefaults.synchronize()
}
答案 0 :(得分:2)
虽然允许,但我们不应该使用use NSUserDefaults
来保存像图像这样的大量数据。您可以像这样轻松地使用文件系统:
保存图片:
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0.0)
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let data = UIImagePNGRepresentation(image)
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let fileURL = documentsURL.URLByAppendingPathComponent("myImage.png").path!
data?.writeToFile(fileURL, atomically: true)
然后稍后获取图片并将其放在UITableView
获取图片:
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let fileURL = documentsURL.URLByAppendingPathComponent("myImage.png").path!
let image = UIImage(contentsOfFile: fileURL)
答案 1 :(得分:1)
您需要创建一个UITableViewController并使用用户默认值中的图像填充它。
您需要将图像保存在数组中并在UITableViewController中获取该数组。然后在UITableViewDataSource函数中,您将返回一个填充了NSUserDefaults中相应图形的单元格。
您需要实施:
public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
您可能应该考虑将图像保存在核心数据或文件系统中。它更适合这种存储。