Я продолжаю получать следующую ошибку:
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller with identifier 'drivingDetails'
Это код:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"];
controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"];
[self.navigationController pushViewController:controller animated:YES];
}
Я уже установил identifier
на UIStoryboard
но я все еще получаю эту ошибку.
Ответы:
Просто для дальнейшего использования:
Я разрабатываю на iOS 6 с использованием раскадровки.
У меня возникла та же проблема, но я не смог найти поле «Идентификатор» в инспекторе. Вместо этого просто установите в поле «Storyboard ID» то, что вы бы назвали «Идентификатором». Это поле можно найти на вкладке «Показать инспектора идентификации» в Инспекторе.
[Примечание: комментарии ниже указывают на то, что некоторые люди обнаружили, что им нужно (также?) Установить поле «Идентификатор восстановления» чуть ниже идентификатора раскадровки в инспекторе. Нажатие на «Использовать идентификатор раскадровки» кажется недостаточным.]
Ниже приведено изображение для справки: (в этом случае я назвал мой идентификатор так же, как мой класс)
источник
В Xcode 7 - 11 ,
когда вы меняете идентификаторы раскадровки, и вы получаете такие ошибки,
просто ОЧИСТИТЕ свой проект ( CMD+ SHIFT+ K)
источник
Исправлена! В моем случае DrivingDetails должен быть установлен не только идентификатор в segue, но также и идентификатор в моем tableViewController как DrivingDetails ... проверьте мою картинку:
Я также удалил контроллер представления навигации, так что теперь два контроллера представления таблицы напрямую связаны с анимацией «push».
***** РЕДАКТИРОВАТЬ для XCODE 7.0 *****
Вы должны установить storyboardId (в этом случае viewController встроен в контроллер Navigation:
источник
[storyboard instantiateViewControllerWithIdentifier]
НЕ создается экземпляры представлений из Интерфейсного Разработчика внутри контроллера представления; но в iOS6 это былоПримечание:
"StoryboardFileName"
это имя файла раскадровки и не идентификатор раскадровки!"StoryboardID"
это идентификатор, который вы вручную установили в инспекторе идентичности для этой раскадровки (см. скриншот ниже).Иногда люди считают, что первый - это Storyboard ID, а второй - имя класса View Controller, поэтому обратите внимание на разницу.
источник
.instantiateViewController(withIdentifier: "StoryboardID")
следует переименовать в.instantiateStoryboard(withIdentifier: "StoryboardID")
Или просто что-то попрощеUIStoryboard(name: "StoryboardFileName", bundle: nil).init()
Удостоверение расположено на вкладке Identity Inspector с именем Storyboard ID для Xcode 6.3.2 и отмечено параметром Use Storyboard ID.
источник
Просто возникла эта проблема после добавления нового ВК в раскадровку, но только на устройстве, а не на симуляторе. Оказывается, это связано с несколькими локализациями раскадровки - VC был добавлен только к основной. Я попытался удалить другие локализации (одну из которых использует мой iPhone), но ошибка все равно была. В конце мне пришлось воссоздать другие локализации с новым VC в каждой из них.
источник
Компилятор показывает следующую ошибку:
Здесь объект созданной раскадровки не является основной раскадровкой, которая содержит наши ViewControllers. Как раскадровки файл , на котором мы работаем назван Main.storyboard . Так что нам нужно иметь ссылку на объект Main.storyboard .
Для этого используйте следующий код:
Вот
storyboardWithName
имя файла раскадровки, с которым мы работаем, иbundle
определяет пакет, в котором находится наша раскадровка (то естьmainBundle
).источник
Для тех, у кого такая же проблема, как у @Ravi Bhanushali, вот решение Swift 4:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
источник
Я нашел это ... нажмите на контроллер представления в раскадровке, щелкните на третьем значке слева на инспекторах атрибутов vc - тот, где вы устанавливаете имя вызова на этом экране, он говорит: «идентичность» - мой был скрыт, мне пришлось нажмите на слово identity, затем отобразится storyboardID - добавьте идентификатор из кода, готово
источник
Изменение «Storyboard ID» в инспекторе идентичности (3-й значок слева) должно работать.
Если нет, и вы уверены, что опечаток нет, попробуйте очистить проект («Продукт» -> «Очистить» или просто команда + Shift + K).
источник
При вводе идентификатора вы не выбрали правильный контроллер вида, просто проверьте один раз, если закончите, повторите процедуру еще раз.
источник
У некоторых из моих контроллеров представления отсутствовал атрибут storyboardIdentifier .
Перед:
После:
источник
Я получил ту же ошибку, и я мог это исправить, изменив следующие изменения в моем проекте. Я упомянул свое имя класса в панели инспектора, тогда проблема решена. Перейти-> правая панель там Identity Inspector В разделе пользовательских классов
class: ваше имя класса (ViewController)
В идентификаторе раскадровки раздела Identity: ваш идентификатор раскадровки (имя viewController)
После этого нажмите на опцию Использовать ID раскадровки там. На этом проблема закончена. Я надеюсь, что это поможет вам ....
источник
Используйте свой идентификатор (@ "drivingDetails") в качестве идентификатора раскадровки.
источник
очень просто выбрать соответствующий контроллер представления в основной панели раскадровок и проверить идентификатор раскадровки, если его настоящий пользователь использует его в идентификаторе имени и использует его.
здесь мой первый - это storyboardID let vc = self.storyboard? .instantiateViewController (withIdentifier: "firstone") как! tabBarViewController
источник
Я перепробовал все вышеперечисленные решения, и ни одно из них не сработало.
То, что я сделал, было:
И тогда это сработало. Шокирующим было то, что я ввел Storyboar ID в конструкторе интерфейсов, и он был удален / удален после повторного открытия Xcode.
Надеюсь, это кому-нибудь поможет.
источник
Очистка всех вещей и закрытие Xcode не решили проблему для меня.
Мне пришлось удалить viewController и создать новый с новым идентификатором.
источник
Примечание: если вы используете cocoapods в своем проекте, то сначала запустите
pod deintegrate
иrm Podfile.lock
Затем откройте папку вашего проекта в любом стороннем редакторе кода, таком как VSCode, и выполните глобальный поиск имени ViewController, выдав ошибку.
Теперь все должно работать нормально.
Это чаще всего происходит, когда вы переименовываете файлы из Xcode.
источник
XCODE DRAG N DROP PANE УЖЕ !!!
источник