2016-05-23 5 views
0

IBOutletのプロパティにアクセスする前に、ビューがロードされるまで待つ必要があることを読んでいます(またはviewDidLoad())。IBOutlet varにアクセスし、それを使ってクラスにアクセス可能な定数を定義する

私の問題がある:私は全体のViewControllerクラスにアクセス可能な定数としてIBOutlet UIButtonのタイトルの色のプロパティを保存する、または少なくともクラス - 内IBAction方法から、それが出ているようです私は定数をviewDidLoad()の中に定義しているので、どこにでもアクセスすることができません。私はviewDidLoad()IBActionの両方の方法でそれを使用する必要があります。

Instance member 'lowFilterButton' cannot be used on type ViewControllerというエラーが表示されるので、クラスメソッドの外では定義できません。どうすればよいですか?色を両方のメソッドにハードコードすることができますが、私は将来の参照のためのより良い解決策を探したいと思います。

答えて

1

インスタンスメソッド(viewDidLoad())のクラス定数に、適切な参照なしでアクセスしようとしているようです。あなたが書くことができないので、クラス定数はクラスではなく、インスタンスに属して:あなたは簡単に一定の色にアクセスする場合は、同じようviewDidLoad()前にそれを定義

class ViewController: UIViewController { 
    static var color: UIColor! 
    @IBOutlet weak var myButton: UIButton! 

    func viewDidLoad() { 
     super.viewDidLoad() 

     // Refer to the class of the current instance 
     self.dynamicType.color = myButton.tintColor 

     // You can also refer to the class by name 
     ViewController.color = myButton.tintColor 
    } 
} 
1

color = ...  // invalid 
self.color = ... // invalid 

ではなく、これを行いますこの:

:あなたはボタンの色を設定したいとき

let myColor = UIcolor.[NAME OF COLOR] 

次に、このようにそれを行います10

lowFilterButton.tintColor = myColor 

myColorをviewDidLoadの外側で定義する限り、View Controller全体でmyColorにアクセスできる必要があります。

+0

私の質問は、メソッドの外部で動作しないIBOutletのプロパティ(UIcolorだけでなく)にアクセスして、最初の定数myColorを定義することでした。それは以下の回答でした!とにかくありがとう – sboo

関連する問題