Как я могу решить NSRangeException в Swift 4? - PullRequest
0 голосов
/ 29 апреля 2018

Я работаю над приложением, в котором я использую swift 4. Но когда я хочу перейти от первого viewcontroller ко второму viewcontroller, я получаю эту ошибку

* Завершение работы приложения из-за необработанного исключения «NSRangeException», причина: '* - [__ NSArrayI objectAtIndex:]: индекс 18446744073709551615 за пределами [0 .. 0]'

Я пытался перейти от первого viewcontroller ко второму viewcontroller по нажатию кнопки, как показано ниже

let vc = storyBoard.instantiateViewControllerWithIdentifier("nextView") as NextViewController
self.presentViewController(vc, animated:true, completion:nil)

Но когда я нажал кнопку, приложение перестало работать, и ошибка превысила nsrangeexception

Так, как мне решить эту ошибку любым другим решением, чтобы перейти от первого vc ко второму vc?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Если вы хотите перемещаться по Контроллеру на StoryBoard с Идентификатором "nextView", то сделайте это (это применимо, когда вы пытаетесь показать ViewController одной раскадровки на другой раскадровке ViewController):

   let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
   let vc = storyBoard.instantiateViewController(withIdentifier: "nextView") as! NextViewController
   self.present(vc, animated:true, completion:nil)

ИЛИ Если вы находитесь в той же истории, то вы можете просто сделать это - Возьмите кнопку в вашем firstVC и ctrl+ drag переходе к вашему secondVC. Затем нажмите на переход. (круглая вещь между двумя контроллерами представления). -

enter image description here

И установить для этого идентификатор (здесь about - это идентификатор, для него можно дать любое имя) -

enter image description here

Вот код -

@IBAction func UserDetailVC(sender: AnyObject) {
        self.performSegue(withIdentifier: "segueIdentifierName(about)", sender: sender)
    }
0 голосов
/ 29 апреля 2018

Прежде всего убедитесь, что у вашего NextViewController есть идентификатор раскадровки в раскадровке:

enter image description here

И убедитесь, что вы правильно загружаете раскадровку:

let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
...