Swift - iOS入口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift - iOS入口相关的知识,希望对你有一定的参考价值。
参考技术A 在Swift项目中,程序的入口跟OC是不一样的如图
这时候会发现,苹果帮我们定义了程序的入口,如果我们把这个@main给注释掉,就如上图,是会报错的,那么我们怎么定义自己的main函数入口呢
如何仅使用代码在您的 iOS 应用程序中显示 ViewController?
【中文标题】如何仅使用代码在您的 iOS 应用程序中显示 ViewController?【英文标题】:How to show a ViewController in your iOS app by only using Code? 【发布时间】:2020-04-06 10:42:23 【问题描述】:我想在我的应用程序中显示一个 ViewController 而不使用情节提要入口点。
我确保删除了默认情节提要入口点并且情节提要 ID 和名称正确。在模拟器上运行应用程序时,我得到的仍然只是黑屏。
这是我的 AppDelegate.swift 文件。
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
let sb = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = sb.instantiateViewController(withIdentifier: "VC")
window?.rootViewController = initialViewController
window?.makeKeyAndVisible()
return true
// MARK: UISceneSession Lifecycle
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>)
// Called when the user discards a scene session.
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
感谢任何帮助。
【问题讨论】:
【参考方案1】:SceneDelegate
与应用程序委托有点不同。您使用UIWindowScene
来构造您的UIWindow
。
let sb = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = sb.instantiateViewController(withIdentifier: "VC")
if let windowScene = scene as? UIWindowScene
let window = UIWindow(windowScene: windowScene)
window.rootViewController = initialViewController
self.window = window
window.makeKeyAndVisible()
【讨论】:
【参考方案2】:如果您使用 Viewcontrollers 和 xcode 11.3.1 或更高版本,请在创建新项目后按照以下步骤操作。
-
从 info.plist 中删除应用程序场景清单
删除 SceneDelegate.swift 文件
从 AppDelegate 文件中移除 Swift UI 相关的方法。
删除 ContentView.swift 文件
创建新的 ViewController 文件 文件>新建>Cocoa Touch 类
在 AppDelegate 文件中设置我们的 MainViewController。
添加这个
window = UIWindow(frame: UIScreen.main.bounds)
window!.rootViewController = MainViewController()
window!.makeKeyAndVisible()
window?.rootViewController = UINavigationController(rootViewController: MainViewController())
【讨论】:
以上是关于Swift - iOS入口的主要内容,如果未能解决你的问题,请参考以下文章