как преподнести урок с раскадровкой - PullRequest
0 голосов
/ 31 марта 2019

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

В раскадровке -> ViewController -> Custom Class Я установил свой класс. Также я установил ID "board1" Почему он установил нулевое значение ???

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        table.deselectRow(at: indexPath, animated: true)
        let registerViewController = storyboard?.instantiateViewController(withIdentifier: "board1") as? RegisterViewController
        present(registerViewController!, animated: true, completion: nil)
    }

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Вы, кажется, используете какой-то неизвестный экземпляр storyboard здесь:

let registerViewController = storyboard?.instantiateViewController(withIdentifier: "board1") as? RegisterViewController

Согласно вашим комментариям, storyboard, похоже, не объявлен вами.Это означает, что он, вероятно, не ссылается на ваш файл Main.storyboard и может даже иметь значение nil.

Вам следует создать новый экземпляр UIStoryboard, который ссылается на ваш файл Main.storyboard, например:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let registerViewController = storyboard.instantiateViewController(withIdentifier: "board1") as? RegisterViewController
0 голосов
/ 31 марта 2019

Вы можете сделать это так:

// Perform the segue to the viewController you want. Make sure you set the identifier the same as in the storyboard

let VC1 = (self.storyboard?.instantiateViewController(withIdentifier: "yourIdentifier"))!
self.present(VC1, animated: true, completion: nil)

Также можно написать расширение для этого:

extension UIViewController {
    func presentView(withIdentifier: String) {
        if let newVC = self.storyboard?.instantiateViewController(withIdentifier: withIdentifier) {
        self.present(newVC, animated: true, completion: nil)
        }
    }
} 

И затем назвать его так:

self.presentView(withIdentifier: "yourIdentifier")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...