2016-10-07 3 views
0

У меня есть два вида таблицы в одном контейнере. Я вставляю каждый из них в контейнер. enter image description hereКак использовать два вида таблицы в одном представлении?

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated: false) 
    self.storyboard?.instantiateViewController(withIdentifier: "ChildTableView") as! ChildTableViewController 
     childTV.updateTable(id: indexPath.row) 
} 

мне нужно обновить второй TableView, когда первый TableView клетки щелкнул. Как я могу это сделать?

+0

Просто сделай это. Какая трудность? – matt

+0

i cant update второй вид таблицы с первых –

+0

Что значит «вы не можете»? Почему нет? Что происходит, когда вы пытаетесь это сделать? Покажите свой код. Объясните, что происходит, когда вы запускаете его, и как это отличается от того, что вы хотели. – matt

ответ

0

Хорошо, я думаю, что вижу проблему. То, как вы это сделали, состоит из двух UITableViewControllers и их табличных представлений. Итак, теперь у вас возникла проблема с обменом данными между двумя контроллерами табличного представления. Но учтите следующее: если вы действительно создали контроллеры дочерних представлений, контроллеры табличных представлений являются дочерними элементами одного и того же родителя. Таким образом, первый контроллер табличного представления может получить свой родительский контроллер представления, затем получить дочерние контроллеры родительского представления, затем получить дочерний контроллер второй, и это должен быть второй контроллер представления таблицы.

Другими словами, если ваш вид иерархии контроллер:

ParentViewController 
    TableViewController1 
    TableViewController2 

... то TableViewController1 можно сказать:

let tvc2 = self.parent!.childViewControllers[1] as! TableViewController2 

... и теперь вы установили линию связи между их. Поэтому теперь контроллер табличного представления 1 может поговорить с контроллером табличного представления 2 и сообщить ему обновить его таблицу. Вам нужно будет иметь метод в контроллере 2 табличного представления, который может вызвать контроллер табличного представления 1, чтобы передать ему любые необходимые данные и сказать, что делать.

0

во Второй TableView:

override func viewDidLoad() { 
    super.viewDidLoad() 
    NotificationCenter.default.addObserver(self, selector: #selector(ChildTableViewController.updateTable(sender:)), name: NSNotification.Name(rawValue: "updateChild"), object: nil) 
} 

func updateTable(sender:NSNotification){ 
    tableView.reloadData() 
} 

в первой TableView:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated: false) 
    selectedItem["id"]=indexPath.row 
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "updateChild"),object:selectedItem) 
} 
Смежные вопросы