gpt4 book ai didi

ios - 关于初始化 viewcontroller (swift)

转载 作者:可可西里 更新时间:2023-11-01 01:25:06 25 4
gpt4 key购买 nike

我有一个名为 TwoViewController.swift 的 ViewController 文件和一个名为 TwoViewController.xib 的 nib 文件。

TwoViewController.swift 像这样 ↓

class TwoViewController: UIViewController {
var pageTitle: String?

・・・・・・
override func viewDidLoad() {
super.viewDidLoad()
}
・・・・・・
}

然后,我将新建一个 TwoViewController 并将其呈现在 OneViewController.swift 中,如下所示↓

class OneViewController: UIViewController {

・・・・・・
override func viewDidLoad() {
super.viewDidLoad()
}
・・・・・・
func presentTwo() {
let two = new TwoViewController()
two.pageTitle = "2222"
self.present(two, animated: false, completion: nil)
}
}

但是,我想像这样同时new TwoViewController 并将值设置为属性pageTitle新的 TwoViewController(pageTitle: "22222")

为此,我想我需要在 TwoViewController 中创建一个 init 方法。我尝试制作如下所示的初始化方法↓。这个对吗?

class TwoViewController: UIViewController {
var pageTitle: String

init(pageTitle: String) {
super.init(nibName: nil, bundle: nil)
self.pageTitle = pageTitle
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

override func viewDidLoad() {
super.viewDidLoad()
}
・・・・・・
}

最佳答案

您可以这样做,但是您必须在每个初始化程序中使用一些您通常不知道的默认值来初始化 pageTitle

因此,这样做并不常见。而是在初始化后分配属性值,就像您最初所做的那样(在 funcTwo 中),然后在 viewDidLoad 中继续处理:

class TwoViewController: UIViewController {
var pageTitle: String!

override func viewDidLoad() {
// use pageTitle to fill some outlet or so:
self.title = pageTitle
}
}

或者使 pageTitle 成为可选项,并在 viewDidLoad 中检查是否已设置。


顺便说一句:如果您遵循命名方案并像 View Controller 一样命名 XIB 文件,则可以使用隐式形式:

let twoController = TwoViewController.init()

或明确地

    let twoController = TwoViewController.init(nibName: "TwoViewController", bundle: nil)

关于ios - 关于初始化 viewcontroller (swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41999258/

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