gpt4 book ai didi

ios - 在 Swift 中从 CollectionViewCell 中的 rootViewController 访问 var

转载 作者:搜寻专家 更新时间:2023-11-01 07:34:16 25 4
gpt4 key购买 nike

我想从我的 rootViewController 从另一个 viewController(它是一个 CollectionViewCell)中访问一个变量。

window!.rootViewController = ViewController()

我这样声明变量:

import UIKit

class ViewController: UIViewController {

var testString : String = "Test";

override func viewDidLoad() {
[…]

并尝试以这种方式访问​​它:

import UIKit

class MainCollectionViewCell: UICollectionViewCell {
override init(frame: CGRect) {
[…]
super.init(frame: frame)

let mainView = self.window!.rootViewController
var testStringFromMainView = mainView.test
[…]

但我一直得到的是:

Type of expression is ambiguous without more context

奇怪的是,当我尝试举例时

mainView.view.backgroundColor = UIColor.redColor()

有效。

我不知道我做错了什么。感谢您的帮助!

最佳答案

您必须有条件地转换 rootViewController。您当前的代码只知道它是一个 UIViewController,但为了让它使用您的变量,它需要知道它是您的子类 View Controller ViewController 的一个实例。

用这个替换你的 MainCollectionViewCell.init 应该可以解决问题:

if let cvc = self.window!.rootViewController as? ViewController {
var testStringFromMainView = cvc.test
}

请注意,由于条件解包比强制解包安全得多,如果 rootViewController 不是类 ViewController 的实例,则不会执行此代码.换句话说,如果您的应用有多个 View Controller ,您需要查看全局变量。

关于ios - 在 Swift 中从 CollectionViewCell 中的 rootViewController 访问 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30968679/

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