2017-02-11 6 views
2

В настоящее время у меня есть ViewController с ячейками прототипов в UITable View. cells отображает содержимое с Firebase DB при загрузке. То, что я хотел бы сделать, - это когда нажата cell, дополнительная информация указана с Firebase DB. Тем не менее, я в настоящее время не могу получить segue до , нажимая на ViewController с cell. Что я должен делать, это сработает?Segue не будет отображать ViewController при нажатии

Изображение моей раскадровку -

enter image description here

+0

Какая ошибка возникает у вас? –

+0

@TusharSharma У меня нет ошибок, вот и все. Я действительно не знаю, как отладить эту проблему. – gabe

+0

вы нажали свой контроллер просмотра, в котором у вас есть табличный вид с контроллером навигации? –

ответ

0

Я действительно нашел решение этого вопроса. На самом деле проблема была довольно простой. Все, что мне было нужно, это изменить настройку выбора в атрибутах табличного вида из «Нет выбора» в «Единый выбор».

0

Эти два фрагмента кода, который поможет. Для быстрого:

@IBAction func showEntries(_ sender: Any) { 
    self.performSegue(withIdentifier: <sequeId>, sender: nil) 
} 

и кнопка с действием, обертывающим это.

Для цели C вы можете выполнить такой шаг.

[self performSegueWithIdentifier:@"showEditor" sender:self]; 

Создайте действие CTRL и перетащите кнопку или ячейку в соответствующий файл кода, выберите действие и назовите его. enter image description here

+0

Добавление кнопки не выглядит визуально приятным, так как содержимое Firebase загружается примерно через 2 секунды после появления на экране кнопки. – gabe

+0

Оптические кнопки являются опцией, ответ выше выглядит так, как будто он будет работать, выбирая строку. – djoq

0

Трудно сказать, но из скриншота это выглядит как переход от контроллера к контроллеру, а не к контроллеру. Если вы хотите сделать это так, то вам нужно дать SEGUE идентификатор (в правой панели экрана), а затем переопределить делегат методу

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    performSegue(withIdentifier: "yourIdentifier", sender: self) 
} 

ИЛИ (если вы не чувствуете как и для всех этих проблем) ... в раскадровке перетащите сегмент из ячейки в контроллер, который вы хотите нажать, а не от контроллера к контроллеру.

Например,

enter image description here

Обратите внимание, как при выборе Segue, только клетка выделены синим цветом, а не весь контроллер представления.

+0

Спасибо, однако выбор самой ячейки тоже не работает, и добавление вашей части кода ничего не меняет. – gabe

+0

Хм ... это может быть глупый вопрос, но выбираются ли ячейки? (В том числе убедитесь, что параметр «Выбор» ячейки в раскадровке не установлен на «Нет».) И идентификатор повторного использования ячейки правильно установлен? – Samantha

+0

Кроме того, я просто заметил, что тип segue - это подробная деталь. Вы на iPhone? Показать детали предназначено для использования в контроллерах с раздельным представлением («показать это представление в панели подробностей с разделенным видом»). Если вы хотите просто нажать контроллер просмотра на стек навигации, тип должен быть «Показать (например, Push)». – Samantha

0

Это потому, что ячейки динамические, поэтому вы не можете назначить обработчик событий из ячейки в uiviewcontroller. Вместо этого вы должны сделать segue внутри своего метода cellForRowAtIndexPath и оттолкнуть его оттуда. Если вы хотите видеть segue внутри раскадровки, тем не менее, вы также можете ctrl + перетащить из viewcontroller1 в viewcontroller2, чтобы сделать новый segue. Затем выберите segue и дайте ему идентификатор Storyboard. After That вы можете позвонить по телефону self.performSegue(withIdentifier: "yourIdentifier")

+0

Я установил segue и код, где вы сказали, но ViewController загружается, как только ячейка загружается. Когда я возвращаюсь назад, меня возвращают в камеру, и я не могу снова нажать ее. – gabe

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