2015-12-11 3 views
2

У меня есть пользовательская ячейка. Он имеет UIImageView и кнопку. Когда я нажму кнопку, мое приложение сохранит мое изображение в фотоальбоме и покажет предупреждение о результатах.Быстрое оповещение о событии с пользовательской ячейкой

Вот мой код:

@IBAction func saveImage(sender: UIButton) { 
     UIImageWriteToSavedPhotosAlbum(self.photo.image!, self, "saveImageToLibrary:didFinishSavingWithError:contextInfo:", nil) 
    } 

func saveImageToLibrary(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo:UnsafePointer<Void>) { 
    let vc = ViewController() 
    if error == nil { 
     let ac = UIAlertController(title: "Saved!", message: "Image has been saved to your photos.", preferredStyle: .Alert) 
     ac.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil)) 
     vc.presentViewController(ac, animated: true, completion: nil) 
    } else { 
     let ac = UIAlertController(title: "Save error", message: error?.localizedDescription, preferredStyle: .Alert) 
     ac.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil)) 
     vc.presentViewController(ac, animated: true, completion: nil) 
    } 
} 

Но когда я нажимаю мою кнопку Сохранить в Tableview, он сохраняет изображение успешно с потеплением:

Warning: Attempt to present <UIAlertController: 0x7fa452f74ee0> on <Test.ViewController: 0x7fa452f56f40> whose view is not in the window hierarchy! 

Как я могу позвонить предупреждение из пользовательской ячейки?

ответ

1

Я бы решить эту проблему с помощью делегата: В пользовательской ячейке добавить этот код

var delegate: UIViewController? 

и в вашем Tableview (Tableview: cellForRowAtIndexPath) добавить строку:

cell.delegate = self 

и, наконец, ваша реализация saveImageToLibrary заменит vc на delegate?. ? потому что вы создали делегат как необязательный.

+0

Спасибо. Я пробовал и добивался успеха. – Ashley

+0

Возможно, вы захотите сделать объект делегата слабой переменной, чтобы избежать утечки данных –