gpt4 book ai didi

ios - 在 Swift 中以编程方式设置 Root View Controller

转载 作者:行者123 更新时间:2023-11-28 05:33:17 25 4
gpt4 key购买 nike

我不确定为什么这如此微不足道,但我的 Swift 翻译速度很慢。无论如何,我无法弄清楚它在提示什么。我想要做的就是设置 Root View Controller ,编译器吐出一条错误消息:

"Splash pageController does not have a member named init"

这是我的应用委托(delegate):

var window: UIWindow?

var CLIENT_KEY = c_key()

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.

window = UIWindow(frame: UIScreen.mainScreen().bounds)

var url_string = "XXXX=\(CLIENT_KEY.client_key)"

var g_home_url = String.stringWithContentsOfURL(NSURL.URLWithString(url_string), encoding: NSUTF8StringEncoding, error: nil)

if (g_home_url? != nil){

NSUserDefaults.standardUserDefaults().setObject(g_home_url, forKey: "showUrl")

}

let DocumentsDirectory = NSSearchPathDirectory.DocumentationDirectory

let UserDomainMask = NSSearchPathDomainMask.UserDomainMask

if let paths = NSSearchPathForDirectoriesInDomains(DocumentsDirectory, UserDomainMask, true){
if paths.count > 0{
if let dirPath = paths[0] as? String {

// let url: NSURL = NSURL.URLWithString("\(g_home_url)/XXX\(CLIENT_KEY.client_key)")

// println(url)
var err: NSError?

var g_home_url = NSUserDefaults.standardUserDefaults().objectForKey("showUrl") as String

println(g_home_url)
var image = UIImage(data: NSData(contentsOfURL: NSURL.URLWithString("\(g_home_url)XXX=\(CLIENT_KEY.client_key)")))

let writePath = dirPath.stringByAppendingPathComponent("splash_page.png")
UIImagePNGRepresentation(image)
}
}
}
//This is where the error shows up
var rootview: SplashViewController = SplashViewController()
if let window = window {

window.rootViewController = rootview;
}

SplashViewController

class SplashViewController: UIViewController {

}

我知道的很基础。通常,在 Objective-C 中,我会初始化一个 nib 名称并将 View Controller 设置为该名称。 Swift 的主要区别是什么?

最佳答案

这一行:

var rootview: SplashViewController = SplashViewController()

...调用 SplashViewController 的 init 方法。但是您还没有为 SplashViewController 提供任何 init 方法。给它一个。

我通常做的是在我的 init 覆盖中指定 Nib ;例如:

override init() {
super.init(nibName:"SplashViewController", bundle:nil)
}

如果您不按照这些路线做某事, View Controller 将找不到它的 Nib ,您最终会看到黑屏。

请注意,该代码很可能会给您带来一条新的错误消息,提示您没有实现 init(coder:);所以你必须实现它,即使只是在意外调用时抛出错误:

required init(coder: NSCoder) {
fatalError("NSCoding not supported")
}

关于ios - 在 Swift 中以编程方式设置 Root View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26514028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com