2016-06-14 4 views
0

Это мой StartViewController с простыми @IBAction:SWRevealViewController - открыть его вручную под @IBAction

class StartViewController: UIViewController { 

    @IBAction func startButtonTapped(sender: UIButton) { 
     revealViewController().revealToggleAnimated(true) //error 
    } 
} 

Наряду с комментировал линии есть ошибка:

fatal error: unexpectedly found nil while unwrapping an Optional value

Что я делаю неправильно?

Конечно StartViewController представлен с SWRevealViewController через sw_front segue.

По какой-то причине revealViewController() возвращает нуль здесь. Зачем?

Это как моя раскадровки выглядит следующим образом:

enter image description here

+0

Я думаю, что вы просто пропускаете SWRevealViewControllerDelegate в своем классе. Попробуйте следующее – SoundShock

ответ

2

При реализации SWRevealViewController с помощью раскадровки, вы должны установить раскадровки точки входа в SWRevealViewController инстанции (Reveal View Controller на картинке), а не перед (контроллер запуска на изображении).

Обратите внимание, что revealViewController метод возврата необязательного указатель, и даже тогда, когда все установлено правильно, что вернуть nil пока не будет загружен вид, так что лучше использовать дополнительные цепочки:

revealViewController()?.revealToggleAnimated(true) 
+0

Нет, я называю это, когда я нажимаю кнопку. Так что это далеко, после того, как просмотр загрузился. –

+0

Я пробовал, но он по-прежнему падает. –

+0

Подтвердите, что метод 'opensViewController' возвращает' nil': 'if opensViewController() == nil {print (" показать ошибку init ")}' –

0

Я думаю, что ваше приложение может привести к сбою, потому что вы отсутствует delegate.Try добавить следующее к протоколам:

class StartViewController: UIViewController,SWRevealViewControllerDelegate { 

    @IBAction func startButtonTapped(sender: UIButton) { 
     revealViewController().revealToggleAnimated(true) //error 
    } 
} 

Если он по-прежнему падает, попробуйте изменить revealViewController().revealToggleAnimated(true) с revealViewController().revealToggle(self) и посмотреть, если он по-прежнему падает.

+0

Он по-прежнему вылетает для обоих методов. –

+0

добавьте это в код 'opensViewController().delegate = self' – SoundShock

+0

Нет, stll сбоев. Я не думаю, что дело здесь. По какой-то причине 'opensViewController()' возвращает нуль, когда это не должно. –

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