Чтобы добавить к ответу Эрика и обновить его для Xcode 8 и Swift 3:
ID раскадровки делает именно то, что подразумевает название: он идентифицирует. Только то , что он идентифицирует в контроллер представления в файле раскадровки. Так раскадровка узнает, какой контроллер представления какой.
Пусть вас не смущает название. Идентификатор раскадровки не идентифицирует «раскадровку». Раскадровка, согласно документации Apple, «представляет собой контроллеры представления для всего или части пользовательского интерфейса вашего приложения». Итак, когда у вас есть что-то вроде изображения ниже, у вас есть раскадровка под названием Main.storyboard, которая имеет два контроллера представления, каждому из которых может быть присвоен идентификатор раскадровки (их идентификатор в раскадровке).
Вы можете использовать идентификатор раскадровки контроллера представления для создания и возврата этого контроллера представления. Затем вы можете манипулировать им и представлять его, как хотите. Чтобы использовать пример Эрика, скажем, вы хотите представить контроллер представления с идентификатором MyViewController при нажатии кнопки, вы бы сделали это следующим образом:
@IBAction func buttonPressed(sender: Any) {
// Here is where we create an instance of our view controller. instantiateViewController(withIdentifier:) will create an instance of the view controller every time it is called. That means you could create another instance when another button is pressed, for example.
let vc = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! ViewController
present(vc, animated: true, completion: nil)
}
Обратите внимание на изменения в синтаксисе.
self.storyboard