2016-11-11 72 views
0

這可能很平凡,但我對Swift很陌生,希望有任何幫助。在兩個已經加載的視圖控制器之間傳遞圖像

應用程序旨在修改圖像。

我有3個ViewControllers:

  • 包含的UIScrollView
    • 行動 - 所有操作完成後以圖像(包含在UIScrollView中)
    • 預覽 - 圖片預覽(包含內的UIScrollView)

我想移動UII從行動到預覽的法師。

所有的視圖控制器已經打開。動作和預覽是UIScrollView的並排子節點。我不想再打開它們或自動移動它們。我只想在Action內完成修改後更新Preview中的圖像。

我使用夫特3.0和Xcode的8.

Interface Builder Layout Image

+0

如果我錯誤地理解了您的問題,請糾正我, Action and Preview是兩個視圖控制器,您正在預覽控制器中預覽圖像,預覽後要將圖像移至動作視圖控制器。那是你要的嗎? – Janmenjaya

+0

您當前IB設計的圖片可能有助於理解您的需求。 – Michael

+0

有兩種方法可以使用,準備將segue傳遞給視圖控制器。或者你可以使用單例類來保存圖像。 – Vinodh

回答

0

通常僅存在一個的viewController可見的時間,所以假設這是的情況下,在它們之間進行通信的典型方法是一個目的地的財產,而且通常是通過一個單獨的協議完成的。例如,

protocol CanDisplayImage { 
    var imageToDisplay: UIImage? { get; set; } 
} 

然後你的目的地的viewController將實現此協議:

class MyPreviewController: UIViewController, CanDisplayImage { 
    var imageToDisplay: UIImage? 
    func viewDidLoad() { 
     theImageView.image = imageToDisplay 
    } 
} 

然後源的viewController導致SEGUE到目的地,並設置該屬性在其

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let dest = segue.destination as? CanDisplayImage { 
     dest.imageToDisplay = theImageToPreview 
    } 
} 

你如何選擇導致賽格可以用不同的方法完成。最常見的做法是從按鈕或源ViewController中的任何內容到目標viewController中的任何位置進行拖動。

請注意,我沒有檢查上面的代碼實際編譯,所以我可能有一些錯別字。

相關問題