如何在Swift中将绘图保存到tableview?

时间:2015-10-26 05:02:14

标签: ios xcode swift uitableview uiimageview

我正在制作一个简单的绘图应用程序,当我按下保存按钮时,我试图将我的绘图保存在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()



}    

2 个答案:

答案 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

您可能应该考虑将图像保存在核心数据或文件系统中。它更适合这种存储。