从子类更改主类

时间:2017-09-30 14:01:22

标签: ios swift

我有一个这样的课程:

class mainVC: UIViewController {

    class subVC: JSONDecodable {

        required init(json: JSON) throws {

            self.view.addSubview(myButton)

        }

    }

}

这是代码的一部分。我想从myButtonmainVC添加subVC,但错误地说:

Value of type 'subVC' has no member 'view'

还有:

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

我该怎么做?感谢。

编辑 - 已在myButtonmainVC

中声明subVC

1 个答案:

答案 0 :(得分:1)

虽然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()
        }
    }
}