2017-02-14 3 views
0

Я пытаюсь создать 2 разных контроллера представления по умолчанию, которые затем вызываются и выполняют указанное действие в зависимости от того, что было в ячейке. Вы бы создали контроллер вида в основной раскадровке, используя xib и т. Д.?Swift - Как реализовать цикл defaultviewcontroller

В основном у меня есть xml-файл, который я обрабатываю, а затем создаю представления таблицы до тех пор, пока не дойду до последней (подробной) страницы для элемента. По моему мнению, лучше использовать один и тот же tableviewcontroller несколько раз вместо создания 1 для каждого уровня. Должен ли я создавать петлю сеге?

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

ли вы pefrom в SEGUE с:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let cell = tableView.cellForRow(at: indexPath as IndexPath) 
    tableView.deselectRow(at: indexPath as IndexPath, animated: true) 
    segueLocation = hNTUL[(indexPath as NSIndexPath).row].locationLevel 
    segueTitle = hNTUL[(indexPath as NSIndexPath).row].locationTitle 
    if segueLocation == "TableView" { 
     performSegue(withIdentifier: "defaultDetailSeague", sender: cell) 
     let destinationVC = DefaultDetailViewController() 
     destinationVC.detailTitle = segueTitle 
    } 
    if segueLocation == "DetailView" { 
     performSegue(withIdentifier: "defaultTableSeague", sender: cell) 
     let destinationVC = DefaultTableViewController() 
     destinationVC.tableTitle = segueTitle 
    } 
} 

Также возможно, что я пытаюсь идти об этом неправильный путь.

Я также искал примеры проектов, но не нашел ни одного, который мог бы вести меня в правильном направлении.

Мысли?

+0

Спасибо, что вы указали больше кода, но мой ответ ниже, все еще стоит. Вам нужна реализация 'prepare (for: sender:)', и у вас ее нет. Пожалуйста, прочитайте, пожалуйста, что я сказал в своем ответе. – matt

+0

Будет ли это то, о чем вы говорите? 'переопределить FUNC подготовить (для Segue: UIStoryboardSegue, отправитель: Любой) { если segue.identifier == "LevelTwo"{ , если пусть indexPath = self.tableView.indexPathForSelectedRow { Пусть контроллер = segue.destination как! LevelTwoTableViewController пусть mCaty = mainCat [(indexPath в NSIndexPath) .row] controller.selectedName = mCaty.mainCategoriesTitle }} } ' – Number1

+0

Да, только такие вещи, хотя я не думаю, что тест на' я .tableView.indexPathForSelectedRow' будет работать так, как вы ожидаете (я мог ошибаться в этом). – matt

ответ

0

Если вы позвоните, то performSegue, вы должны не создать destinationVC; segue создает его для вас. К сконфигурируйте контроллер вида назначения, реализуйте prepare(for:sender:) и извлеките код destination от segue, отбросив его до DefaultDetailViewController. Обязательно убедитесь, что это правильный шаг!

+0

Я могу только прокомментировать код вы показали. Как показано, это неправильно, и мой ответ говорит вам, почему. – matt

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