2015-10-26 4 views
1

Я делаю простое приложение для рисования, и я пытаюсь получить мой рисунок, сохраненный в виде таблицы, когда я нажимаю кнопку сохранения. Я использую UIImageView, чтобы пользователи могли рисовать. Правильно ли это сохранить изображение с помощью NSUserdefaults и как сохранить его в виде таблицы? Спасибо! Это код Im положить в моей кнопку сохранения:Как сохранить чертеж в табличном представлении в Swift?

@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

Несмотря на то, что мы не должны использовать 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) 
+0

Строка myImage.png Я мог бы что-то там положить прямо? Поскольку изображение не создано до тех пор, пока пользователь не нажмет на сохранение. – coding22

+0

Правильно - это имя для вашего изображения! – Abhinav

+0

Код для получения изображения должен ли я помещать это в viewDidAppear в MasterViewController для просмотра таблицы? – coding22

1

Вам нужно создать UITableViewController и заполнить его с изображениями от пользователей по умолчанию.

Вам нужно будет сохранить изображения в массиве и получить этот массив в UITableViewController. Затем в функциях UITableViewDataSource вы должны вернуть ячейку, заполненную соответствующим чертежом из NSUserDefaults.

Вы должны реализовать:

public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

Вы, вероятно, следует искать в сохранении изображения в основных данных или файловой системы вместо этого. Это больше подходит для такого рода хранения.

Смежные вопросы