"Раскадровка не содержит контроллера вида с идентификатором" только на устройстве
У меня есть эта раскадровка:
![введите описание изображения здесь]()
С помощью этого ViewController:
![введите описание изображения здесь]()
У меня есть этот код, чтобы стимулировать мой VC:
let VC = UIStoryboard(name: "Main_iPhone", bundle: nil).instantiateViewControllerWithIdentifier("POIListViewController")
Когда я запускаю симулятор, все работает.
Но когда я запускаю на реальном устройстве, у меня есть это исключение:
2016-07-12 10:56:19.073 App-Ely[1935:562264] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x185481b0>) doesn't contain a view controller with identifier 'POIListViewController''
*** First throw call stack:
(0x2a23b5f7 0x37aadc77 0x2dc36f25 0x182b8c 0x182dd0 0x12d99f 0x2a1f3f15 0x2a14ee4d 0x2ae83ec1 0x13e0d5 0x168a2d 0x2d7f9607 0x2d8ab0a7 0x2d75d1f1 0x2d6d8eff 0x2a202015 0x2a1ff6f9 0x2a1ffafb 0x2a14cb31 0x2a14c943 0x3152c051 0x2d7426f1 0x16fce3 0x38049aaf)
libc++abi.dylib: terminating with uncaught exception of type NSException
ИЗМЕНИТЬ:
У меня правильно загружена раскадровка:
let storyboard = UIStoryboard(name: "Main_iPhone", bundle: nil)
// 'storyboardName' contains "Main_iPhone"
let storyboardName : String = storyboard.valueForKey("name") as! String
let VC = storyboard.instantiateViewControllerWithIdentifier("POIListViewController")
Ответы
Ответ 1
let storyboard = UIStoryboard(name: "Main_iPhone", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("POIListViewController") as! UIViewController
ИЗМЕНИТЬ
Просто очистите свой проект (CMD + SHIFT + K), поскольку вы меняете имя раскадровки, я думаю.
Ответ 2
Закройте свой проект и откройте его снова.
Если вы заметили, что идентификатор ушел, значит, это проблема автоматической экономии.
Просто сохраните свой файл раскадровки после ввода нового идентификатора.
и Clean-Build-Run.
Ответ 3
Попробуйте изменить его на:
let VC = self.storyboard!.instantiateViewControllerWithIdentifier("POIListViewController") as! POIListViewController
Ответ 4
У меня была аналогичная проблема (за исключением того, что это было не только на устройстве).
Ни один из предыдущих предложений в этой теме не работал у меня. Что работало в Identity Inspector (в правой панели "Утилиты" ), и убедитесь, что поле идентификатора Storyboard также заполнено именем View Controller (то же имя, что и поле Class над ним).