gpt4 book ai didi

ios - 调用Other ViewController打开黑屏

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

我刚刚开始在 Swift 中开发 IOS,现在我被困在一件事上。我想要的是将一个字符串值从一个 ViewController 传递给 Other。

第一个 View Controller

// on TableCell Click


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
CommonFunctions.setDefaults("a", value: arr[indexPath.row])
let viewController = SecondView(passedData:arr[indexPath.row])
self.presentViewController(viewController, animated: true, completion: nil)
}

第二个 View Controller

var test:String


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

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

override func viewDidLoad() {
super.viewDidLoad()
print(CommonFunctions.getDefaults("a"))
}

我在第二个 ViewController 中成功获取了字符串,但问题是我遇到了黑屏。

最佳答案

您遇到黑屏是因为您正在使用此代码let viewController = SecondView(passedData:arr[indexPath.row]) 初始化您的SecondViewController

这将调用您创建的自定义初始化器,它不会加载 SecondViewControllerview 属性。

有几种方法可以解决这个问题:

如果你正在使用 Storyboard,你应该使用 segue 而不是手动初始化 View Controller ,并在 prepareForSegue 上传递数据。

performSegueWithIdentifier("The identifier of your segue on storyboard", sender: nil)

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "The identifier of your segue on storyboard" {
let secondViewController = segue.destinationViewController as! SecondViewController
secondViewController.passedData = //data
}
}

如果你正在使用 xibs 你应该使用

let secondViewController = SecondViewController(nibName: "Name of your nib file", bundle: NSBundle.mainBundle())
secondViewController.passedData = //data

或者在您的自定义初始化程序中添加您 Nib 的 Nib 名称:

init(passedData:String){
self.test = passedData
super.init(nibName: /*Add your nib name here*/, bundle: nil)
}

关于ios - 调用Other ViewController打开黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34915700/

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