2017-02-11 71 views
0

我有一個類似於Instagram之類的社交媒體應用的應用。在單元格中,我有一個UIImageView和一個導致獨立視圖控制器的按鈕。我在單獨的視圖控制器中需要的是從UILabel中的數據庫加載的文本,這將根據哪個單元被點擊而改變。什麼是最好和最簡單的方法去做這件事?將Firebase數據從UITableView單元複製到單獨的視圖控制器

更多信息來自我的評論: 在Firebase中,我有一個名爲'posts'的小節,它包含我所有的帖子。這些帖子顯示在主頁面上的單元格中,該單元格還具有「詳細信息」按鈕,該按鈕具有到單獨視圖控制器的繼續。我想要做的是在獨立的視圖控制器中調用某個帖子,然後在UI標籤中顯示該帖子的數據。圖片:m.imgur.com/c7fEKks?r.png

+0

很模糊的問題,但有兩個直接的解決方案。 1)當你填充你的初始數據源(數組)時,包含所需的數據,並且當繼續到另一個視圖控制器時通過segue傳遞'額外'數據。 2)轉換到另一個視圖控制器時,會從Firebase加載數據並顯示在控制器中。還有大約50種其他方式可以解決這個問題,但是沒有特定的用例數據,Firebase結構和代碼,這只是猜測而已。 – Jay

+0

@jay在Firebase中,我有一個名爲'posts'的小節,它包含我所有的帖子。這些帖子顯示在主頁面上的單元格中,該單元格還具有「詳細信息」按鈕,該按鈕具有到單獨視圖控制器的繼續。我想要做的是在獨立的視圖控制器中調用某個帖子,然後在UI標籤中顯示該帖子的數據。圖片:http://m.imgur.com/c7fEKks?r.png – gabe

+0

瞭解。我評論中的兩條建議都是解決方案。 – Jay

回答

0

有許多關於如何通過segue傳遞數據的教程,所以這是一個快速和簡短的片段。

假定以下

甲MasterViewController用的tableView顯示用戶名。 tableView有一個用UserClass對象填充的數組dataSource。這些對象從Firebase填充。

UserClass { 
    userName = "" 
    shoeSize = "" 
} 

帶有文本標籤的DetailViewController。

一個Segue公司稱爲是綁到行上的tableView的MasterViewController到DetailViewController

這賽格瑞「激活」當的tableView一排被竊聽,並會顯示用戶的一種顯示詳細信息「showDetail」鞋子的尺寸在detailViewController

下面是當masterViewController tableView中的一行被點擊時調用的代碼(在MasterViewController中)。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "showDetail" {   
    if let indexPath = self.tableView.indexPathForSelectedRow { 
     let aUser = usersArray[indexPath.row] 
     let shoeSize = aUser.shoeSize 
     let controller = (segue.destination as! 
       UINavigationController).topViewController as! DetailViewController 
     controller.shoeSize = shoeSize 
    } 
    } 
} 
在detailViewController

填充的變量時,顯示它

@IBOutlet weak var shoeSizeLabel: UILabel! 

func configureView() { 
    if let shoe = self.shoeSize { 
     if let label = self.shoeSizeLabel { 
      label.text = shoe 
     } 
    } 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.configureView() 
} 

var shoeSize: String? { 
    didSet { 
     self.configureView() 
    } 
} 
+0

'(segue.destination as! UINavigationController).topViewController as!DetailViewController)'給了我一個預期的表達式錯誤,圓括號應該放在哪裏? – gabe

+0

@gabe以後取出paren! DetailViewController。另外,如果您想查看流程,請在XCode中創建一個全新的項目,然後選擇Master Detail作爲類型,並且segues等將位於創建的項目模板中。 – Jay

+0

好的,查看DetailViewConroller時,我看到的只是UILabel,而不是FireBase數據。我的DetailViewController:http://pastebin.com/8g69sBW5,MainViewController:http://pastebin.com/jtpkBiWX – gabe

相關問題