Я застрял на этой проблеме. Я загружаю json-файл из Firebase и успешно показываю в TableView. Этот TableView имеет пользовательскую ячейку с двумя ярлыками. Я установил ссылку segue из пользовательской ячейки в Detail ViewController. Это работает отлично, но теперь я хочу взять текстовое содержимое ярлыков ячеек и отправить в целевой ViewController.Отправка пользовательского письма с этикеткой в поле назначения до места назначения
У меня не было никаких проблем с этим в прошлом, но у меня возникли проблемы с реализацией этого из label.text в пользовательской ячейке.
Я использую метки меток (label1 и label2, хотя иногда я могу изменить это на названия меток).
Вопрос в том, как получить текстовое содержимое из двух меток из выделенной строки и передать их в DetailViewController? Все мои попытки до сих пор потерпели неудачу. Есть ли что-то я должен делать в:
valueToPass = currentCell?.textLabel?.text
Вот код:
struct postStruct {
let property : String!
let propType : String!
}
class TableViewController: UITableViewController {
var posts = [postStruct]()
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("users").queryOrderedByKey().observe(.childAdded, with: {
snapshot in
let snapshotValue = snapshot.value as? NSDictionary
let property = snapshotValue!["property"] as? String
let propType = snapshotValue!["type"] as? String
self.posts.insert(postStruct(property: property, propType: propType), at: 0)
self.tableView.reloadData()
})
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
let label1 = cell?.viewWithTag(1) as! UILabel
label1.text = posts[indexPath.row].property
let label2 = cell?.viewWithTag(2) as! UILabel
label2.text = posts[indexPath.row].propType
// print(posts)
// cell.setcell(valueToPass.label1)
return cell!
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
var valueToPass:String!
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow;
let currentCell = tableView.cellForRow(at: indexPath!) as UITableViewCell!;
valueToPass = currentCell?.textLabel?.text
performSegue(withIdentifier: "detailSegue", sender: self)
}
Любая помощь приветствуется, в частности, примеры кода. Большое спасибо в ожидании
Привет, и спасибо за принимая время, чтобы ответить. Однако у меня есть несколько вопросов. Должен ли пользовательский класс быть подклассом UITableViewController или подкласса TableViewCell? Не удалось подключить розетки в TableViewCell. Должно ли это быть в TableViewController? Я правильно понял, что код, который вы указали, находится в TableViewController? Если это так, я получил некоторые ошибки, когда я попробовал это, например. let cell = tableView.dequeueReusableCell (withIdentifier: "Cell") Как! MyCustomCell дал ошибку «последовательные объявления в строке должны быть разделены; ' – PhilipS
Наверное, лучше всего отнести это к чатам - я установил один из них под названием TableView ... – Russell
Привет, мне интересно, можете ли вы помочь мне решить другую проблему. Я задал вопрос, но не получил никаких ответов. На самом деле следует из последней проблемы, которую вы мне любезно помогли: http://stackoverflow.com/questions/41937700/swift-3-passing-var-through-a-series-of-segues-viewcontrollers – PhilipS