从实例调用时,xcode swift ios subView alpha不起作用

时间:2018-04-10 11:44:17

标签: ios swift instance alpha subview

我无法从另一个视图控制器的实例控制子视图的alpha值。

以下是该问题的一些伪代码:

class FirstView() // TabVC
{
    func hideSecondViewSubView()
    {
        let secondView = SecondView()
        secondView.number = 0 // this value changes correctly
        secondView.subView.alpha = 0.0  // this fails to control the subview alpha
    }        
}

class SecondView() // a tab view
{
    func viewDidLoad()
    {
       addSubview(subView)
    }

    lazy var subView()
    {
        let view = UIView()
        var number = 1  // initial value for test var
        view.alpha = 1.0   // initial alpha for subview 
    }     
}

在IOS选项卡式视图项目上使用Sierra上的Xcode 9.2。

为什么会失败的任何想法?

2 个答案:

答案 0 :(得分:0)

IF 这是您的实际代码...

1. class FirstView() // TabVC
2. {
3.     func hideSecondViewSubView()
4.     {
5.         let secondView = SecondView()
6.         secondView.number = 0 // this value changes correctly
7.         secondView.subView.alpha = 0.0  // this fails to control the subview alpha
8.     }        
9. }

在第5行,您创建了SecondView实例。然后,在本地实例secondView中设置两个属性。

在第8行,函数退出,secondView的本地实例超出范围,secondView 不再存在

如果您要更改在其他地方创建的SecondView实例中的值/属性,则必须获得对 实例的引用。< / p>

因此,例如,您的类看起来与此类似:

class FirstView() // TabVC
{
    var secondView = SecondView()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(secondView)
        // set initial properties of secondView - constraints, etc.
    }

    func hideSecondViewSubView()
    {
        // don't create a new instance - use the class-scoped instance
        //let secondView = SecondView()
        secondView.number = 0
        secondView.subView.alpha = 0.0
    }        
}

如果这不是 问题,那么你真的需要发布你的实际代码,以便我们可以看到发生了什么。

答案 1 :(得分:-1)

您需要将其作为子视图添加到第一个视图中,而不是尝试更改父视图的Alpha值,子视图值将自动更改。