查看此文章:Xcode 11.3 | [从项目中删除Storyboard][1]
步骤1:删除Storyboard
成功创建新项目后,导航到Xcode窗口左上角的Project Navigator。我们需要从这里删除Main.storyboard文件。
步骤2:删除主接口
然后移动到通用选项卡并在此处删除您的主接口链接,然后按Enter键。
步骤3:从Info.plist中删除Storyboard文件。
从Info.plist中删除Main.storyboard。
步骤4:使您的应用程序无需Storyboard运行。
如果您仔细查看Project Navigator,可以看到2个委托文件AppDelegate.swift和SceneDelegate.swift。因此,在以前的Xcode中,我们看到AppDelegate.swift中存在UIWindow变量,而对于Xcode 11,它已经消失了。现在,您可以在SceneDelegate.swift文件中看到window变量。
在此文件中,您需要进行配置,以便加载xib文件。
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
}
就是这样! 现在你可以在没有Storyboard的情况下运行你的应用程序。
我正在运行Xcode 11.4,这是Objective-C方面的工作。
步骤1:删除Storyboard。
步骤2:移除主界面。
步骤3:在info.plist中删除故事板。
步骤4:由于Xcode11中引入了SceneDelegate, 所以我在-(void)scene方法中添加了此内容(在所有注释之后):
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.windowScene = (UIWindowScene *)scene;
self.window.rootViewController = [[UINavigationController alloc]
initWithRootViewController:ViewController.new];
//self.window.rootViewController = [[ViewController alloc]init];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
如您所见,这将视图控制器嵌入导航控制器中,但以下是不使用导航控制器的设置。
希望这可以帮助。
答案已经在问题中了:您需要添加窗口属性。Xcode 11不会生成它。
步骤1:
在SceneDelegate.swift中:
将此行替换为:
guard let _ =(scene as?UIWindowScene)else { return }
改为:
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
window?.rootViewController = ViewController()
window?.backgroundColor = .systemBackground // optional
window?.makeKeyAndVisible()
在“Application Scene Manifest”下的“Storyboard Name”
“Main storyboard file base name”