2017-08-29 32 views
0

我希望將Tabbarcontroller中的一個ViewController(cameraVC)的照片數據傳遞到同一個Tabbarcontroller中的另一個Viewcontroller(mainVC),而不會丟失Tabbar Segue公司。將數據從一個TabbarVC傳遞到另一個TabbarVC不帶Tabbar

設置: * Tabbarcontroller

 -Navbarcontroller 
     --mainVC (Tabbar Item) 
     --cameraVC (Tabbar Item) 

我必須能夠使用prepareForSegue和performSegue在cameraVC(這是我想過去的數據交給mainVC)。

我已經試過W/O成功: Keeping tab bar on View after segue?Why TabBar hides after the segue?

當前實現:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    let destinationNavigationController = segue.destination as! UINavigationController 
    let targetController = destinationNavigationController.topViewController as! HomeVC 

    // if let homeVC = segue.destination as? HomeVC { 
     if let imageDict = sender as? Dictionary<String, Any> { 
      let imageData = imageDict["snapshotData"] 
      targetController.imageData = imageData as? Data 

     // } 
    } 
} 

@IBAction func sendBtnPressed(_ sender: Any) { 

    performSegue(withIdentifier: "goFeed", sender: ["snapshotData": photoData.removeValue(forKey: "photoData")]) 

    imageTaken.image = nil 
    self.view.insertSubview(previewView, aboveSubview: imageView) 
} 
+0

需要傳遞多少圖片數據? – vaibhav

+0

一次只有一個圖像 – Chris

+0

如果只有一個圖像通過,那麼您不需要將'Data'傳遞給下一個vc,只是將圖像直接傳遞給下一個vc的類似對象。 – vaibhav

回答

0

我解決了這個問題的方法是通過建立在我的TabbarController一個變量,它是全球公認和用於將圖像數據傳遞給mainVC。這是我避免創建重複視圖的最可行的解決方案。

0

您正在使用performSegue(_:, sender:)方法不正確的sender說法。它應該是視圖控制器啓動segue。它看起來像你的photoData屬性屬於啓動segue的視圖控制器,所以只需在prepareForSegue方法中直接訪問它。因此,它應該是這樣的:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    let destinationNavigationController = segue.destination as! UINavigationController 
    let targetController = destinationNavigationController.topViewController as! HomeVC 

    if let imageData: Data = self.photoData["photoData"] as? Data { 
     targetController.imageData = imageData 
    } 
} 

@IBAction func sendBtnPressed(_ sender: Any) { 

    performSegue(withIdentifier: "goFeed", sender: self) 

    imageTaken.image = nil 
    self.view.insertSubview(previewView, aboveSubview: imageView) 
} 
+0

考慮到我需要將數據傳遞給mainVC作爲發佈到我的數據庫,這不起作用。它也沒有幫助維護segue上的tabbar – Chris

相關問題