我可以为同一个ViewController使用不同的Storyboard设计吗?



我想把iPad和iPhone的设计分开,所以有可能用一个ViewController功能使用2种不同的设计吗?或者,如果你有任何其他的解决方案,你可以帮助我。

我想把iPad和iPhone的设计分开

可以。你可以为同一个视图控制器类添加多个故事板设计。你可以在iOS 13中做以下操作,它将指定iPhone和iPad使用哪个故事板:

@available(iOS 13.0, *)
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
let config            = UISceneConfiguration(name: "Default Configuration", sessionRole: .windowApplication)
config.sceneClass     = UIWindowScene.self
config.delegateClass  = SceneDelegate.self
if UIDevice.current.userInterfaceIdiom == .phone {
config.storyboard = UIStoryboard(name: "Main", bundle: nil)
} else {
config.storyboard = UIStoryboard(name: "Main_ipad", bundle: nil)
}
return config
}
参考:独立的Storyboard for iPhone和iPad With Multiple Windows

如果您想在上面的场景中从主故事板移动到不同的故事板视图,您可以使用故事板引用或使用以下代码:

let storyboard     = UIStoryboard(name: "your-ipad/iphone-storyboard", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "yourVCIdentifier")

最新更新