Сбой при попытке подтолкнуть контроллер вида в Swift - PullRequest
0 голосов
/ 26 ноября 2018

У меня странная проблема, из-за которой мое приложение падает, когда я пытаюсь нажать новый контроллер представления.Я настроил жест смахивания и хочу перейти к другому контроллеру представления при обнаружении смахивания.Когда я запускаю эти 2 строки кода ...

let viewController:ViewController = ViewController()
self.navigationController?.pushViewController(viewController, animated: true)

Приложение не работает конкретно ни на одной из этих строк кода, а скорее в моем классе ViewController, когда в своем методе viewDidLoad я запускаю этот кусок кода...

imageView.layer.masksToBounds = true

Если я это прокомментирую, произойдет сбой при установке типа автокоррекции для моего textField.Что я делаю не так?

Ответы [ 4 ]

0 голосов
/ 26 ноября 2018

Следуйте тому, что сказал @Sh_Khan, и в дополнение к этому убедитесь, что представление, из которого вы выполняете push-переход, встроено в контроллер навигации.

0 голосов
/ 26 ноября 2018

Первое место, куда я смотрю, когда вид сразу падает, находится в Outlets для этого ViewController в InterfaceBuilder.Я ищу все, что появляется с восклицательным знаком.Обычно это означает, что я переименовал розетку или как-то разорвал соединение.Удалите все, что сломано, нажав маленькую букву «Х» на предмете, который испортил.Я прикреплю фото, чтобы вы могли видеть.

enter image description here

0 голосов
/ 26 ноября 2018

Я думаю, что решил проблему, но у нее странный побочный эффект.Вместо использования строки кода в ответе @ Sh_Khan я использовал ...

let viewController = nav?.storyboard!.instantiateViewController(withIdentifier: "mainVC") as! ViewController

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

РЕДАКТИРОВАТЬ: Другая проблема заключается в том, что он стирает все, что изменилось на этом ViewController пользователем.Есть ли другой способ создания экземпляра ViewController без его очистки?

0 голосов
/ 26 ноября 2018

Кажется, вы загружаете ViewController, который существует в раскадровке, с

let viewController:ViewController = ViewController()

, что приведет к нулевым выходам, поэтому вы должны использовать

let viewController = storyboard.instantiateViewController(withIdentifier: "VCID") as! ViewController

и дать этот vcидентификатор раскадровки, такой как VCID

...