我有这样一个班:

class mainVC: UIViewController {

    class subVC: JSONDecodable {

        required init(json: JSON) throws {

            self.view.addSubview(myButton)

        }

    }

}

这是代码的一部分。我想将myButtonmainVC添加到subVC中,但是is给出了错误的说法:
Value of type 'subVC' has no member 'view'

以及:
Class declaration cannot close over value 'myButton' defined in outer scope

我该怎么做?谢谢。
编辑-
myButton已在mainVC内声明(在subVC外)

最佳答案

尽管SubVC包含在mainVC中,但它没有对mainVC实例的引用来访问mainVC中的属性和方法,因此不能直接访问它们。但是如果你想这样做,你可以把mainVC的一个实例传递给你的subVC.init(),这样它就可以访问它。

class mainVC: UIViewController {
    func foo() {print("mainVC.foo")}
    class subVC: JSONDecodable {

        required init(main:mainVC, json: JSON) throws {
            main.view.addSubview(myButton)
            main.foo()
        }
    }
}

关于ios - 从子类更改主类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46503427/

10-12 06:17