В моем приложении для тяжелой атлетики у меня есть контроллер представления, который я хочу использовать для нескольких целей. Один из них - выбрать тип подъема, который будет сохранен как пользовательский по умолчанию. Другой - выбрать тип подъема, который будет использоваться для фильтрации журнала лифтов пользователя по типу подъема.Как переходить на один UIViewController из нескольких UIViewControllers, встроенных в разные UINavigationControllers
Один из путей (выбор по умолчанию) начинается с экрана настроек. Когда вы нажимаете UITableViewCell, чтобы перейти к экрану «Выбор подъема», представление перемещается справа налево, как и ожидалось, , однако, оно сразу же переводит вид снова справа налево, а панель навигации указывает обратно, сам:
Вот мой раскадровка раскладка:
Вот соответствующий код Segue:
// MARK: - Segues
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "goToLifts" {
let vc = segue.destinationViewController as! LiftSelectionTableViewController
vc.delegate = self
} else {
return
}
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) {
switch indexPath.row {
case 0: performSegueWithIdentifier("goToFormulas", sender: self)
break
case 1: performSegueWithIdentifier("goToLifts", sender: self)
break
default:
break
}
}
Я использую Swift 2.3 и Xcode 8.
Я прочитал документацию от Apple и нашел несколько тем на SO, которые включают множественный VC собирается по одному виртуальному, но они либо дело с прохождением проблем данных или другие вещи.
Может кто-нибудь сказать мне, почему это происходит и как это исправить?
UPDATE:
Сделано изменения, предложенные @vacaWama и теперь она появляется снизу и не навигационной панели:
UPDATE 2:
Исходный код .storyboard превысил лимит, поэтому вот ссылка на него на GitHub:
Я подозреваю, что вы подключили свой сеанс из ячейки прототипа, поэтому он запускается, когда вы выбираете ячейку, и второй раз, когда вы вызываете 'performSegueWithIdentifier'. Если вы хотите запрограммировать segue программно, подключите его к значку viewController в верхней части таблицы TableViewController. – vacawama
Подключается ли с экрана 'settings-> Lifts' к экрану 'select lift type'? Является ли ячейка «Лифты» подсвечивается при нажатии на сцену в раскадровке? И я второй, что сказал @vacawama. –
@vacawama, вы подозреваете правильно. Спасибо, что указал на мою новичковую ошибку. Тем не менее, представление теперь представляет собой модально и без панели навигации (см. Мой отредактированный вопрос). На экране «Настройки» я хочу, чтобы он скользил по экрану справа налево, но из экрана журнала я хочу, чтобы он отображался в виде снизу. Я попытался подключить segue к навигационному контроллеру, в который он встроен, но это не изменило ситуацию. Вы знаете, как я могу это исправить? – Jim