2017-02-11 2 views
0

У меня есть приложение, похожее на приложение в социальных сетях, такое как Instagram. В ячейке у меня есть UIImageView и кнопка, которая ведет к отдельному контроллеру представления. Что мне нужно в отдельном контроллере представления, это текст, загруженный из базы данных в UILabel, который будет меняться в зависимости от того, какая ячейка была нажата. Какой был бы самый лучший и простой способ сделать это?Копировать данные Firebase из ячейки UITableView для отдельного контроллера представления

Дополнительная информация с одного из моих комментариев: В Firebase у меня есть подразделение с именем 'posts', которое содержит все мои сообщения. Эти сообщения отображаются на главной странице в ячейках, которые также имеют кнопку «Подробности», которая имеет отдельный шаг для отдельного контроллера представления. То, что я хочу сделать, это вызвать определенную запись в отдельном контроллере представления, а затем отобразить данные из этого сообщения в ярлыке пользовательского интерфейса. Изображение: m.imgur.com/c7fEKks?r.png

+0

Довольно смутное вопрос, но есть два непосредственных решений. 1) когда вы заполняете свой исходный источник данных (массив), включаете необходимые данные, а при переходе к другому контроллеру представления передайте «дополнительные» данные через segue. 2) При переходе на другой контроллер просмотра загружает данные из Firebase и присутствует в контроллере. Существует около 50 других способов решения этой проблемы, но без конкретных данных использования, структуры Firebase и кода, это просто догадки. – Jay

+0

@jay В Firebase у меня есть подразделение с именем 'posts', в котором хранятся все мои сообщения. Эти сообщения отображаются на главной странице в ячейках, которые также имеют кнопку «Подробности», которая имеет отдельный шаг для отдельного контроллера представления. То, что я хочу сделать, это вызвать определенную запись в отдельном контроллере представления, а затем отобразить данные из этого сообщения в ярлыке пользовательского интерфейса. Изображение: http://m.imgur.com/c7fEKks?r.png – gabe

+0

Понял. Оба предложения в моем комментарии будут решением. – Jay

ответ

0

Существует ряд учебных пособий по передаче данных через segue, поэтому это быстрый и короткий фрагмент.

Предположим следующее

А MasterViewController с Tableview, который отображает имена пользователей. В таблицеView есть массив dataSource, заполненный объектами UserClass. Эти объекты заселены из Firebase.

UserClass { 
    userName = "" 
    shoeSize = "" 
} 

A DetailViewController с текстовой меткой.

Segue называется «showDetail» доброго Show Detail, который привязан к рядам на Tableview на MasterViewController к DetailViewController

Этот Segue «активирует», когда строка в Tableview сливают и будет отображать пользователя размер обуви на detailViewController

Вот код (в MasterViewController), который вызывается при прослушивании строки в таблице viewView 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 Выньте паз после, как! DetailViewController. Кроме того, если вы хотите увидеть поток, создайте новый проект в XCode и выберите Master Detail, так как тип и segues и т. Д. Будут в созданном шаблоне проекта. – Jay

+0

Хорошо, при просмотре DetailViewConroller все, что я вижу, это UILabel, а не данные FireBase. Мой DetailViewController: http://pastebin.com/8g69sBW5, MainViewController: http://pastebin.com/jtpkBiWX – gabe

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