こんにちは。

他のクラスのUIViewの値を(例えばsomeView.alphaの値など)引数を利用してボタンを押した時に変更したいのですが、変更されません。  
下記のコードですが、ボタンを押した時にそれぞれのcaseまでは到達しているようですが(printで確認しました)、目的のviewのプロパティの値が変わりません。  
ちなみに初期状態(ViewDidLoad)では変更されるようです。

ボタンを押した時に値を変更するにはどうすれば良いか教えてください。  
  
  
ViewController.swift

```

    class ViewController: UIViewController {
    
        @IBOutlet weak var vHome: UICollectionView!
        @IBOutlet weak var vSearch: UICollectionView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            selectRd(rd: 3) //ViewDidLoadなんかの初期値では変更できるようです
    
        }
    }
    
    extension ViewController {
    
        func selectRd(rd reader:Int){
    
            var animateView:UIView!
    
            let animateVHome   = vHome
            let animateVSearch = vSearch
    
            UIView.animate(withDuration: 0.3, delay: 0.0, animations: {
                animateVHome.alpha   = 0.0
                animateVSearch.alpha = 0.0
            }, completion: nil)
    
            switch reader {
            case 2:
                animateView = animateVHome
            case 3:
                animateView = animateVSearch
            default:
                break
            }
    
            UIView.animate(withDuration: 0.3, delay: 0.3, animations: {
                animateView.alpha = 1.0
            }, completion: nil)
        }
    
    }
    
```

  
  
  
Another.swift

```

    class Another{
        @objc func buttonTapped(sender : HeaderButton) {
            let vC = ViewController
            vC.selectRd(rd: 2) //このボタンを押した時が変更されません。caseまでは行ってます。
        }
    }
    
```
CC BY-SA 3.0
2018-02-06T11:14:46.590
41516
2019-07-07T07:01:25.430
27305
question
swift ios xcode swift4
引数で他クラスのUIViewの値を変更したい
最後のUIView.animateのdelayを少し増やしてみたら、いかがでしょうか？  
アニメーションの時間がかぶると、新しいアニメーションが無視されることがありますよね。

```

    UIView.animate(withDuration: 0.3, delay: 0.4, animations: {
                animateView.alpha = 1.0
            }, completion: nil)
    
```
CC BY-SA 3.0
2018-03-09T19:54:16.437
42278
2018-03-09T19:54:16.437
20101
41516
answer