-1
class ViewController: UIViewController
{
@IBAction func button_down(_ sender: Any)
{
do_something(view: myView);
}
override func viewDidLoad()
{
super.viewDidLoad();
let screen_size: CGRect = UIScreen.main.bounds;
var myView = UIView(frame: CGRect(x: 0, y: screen_size.height/2 - screen_size.width/2, width: screen_size.width, height: screen_size.width));
myView.backgroundColor = UIColor.red;
self.view.addSubview(myView);
}
}
當我嘗試編譯此代碼創建的視圖,我得到一個錯誤:如何訪問viewDivLoad
Use of unresolved identifier 'myView'
我怎樣才能解決這個問題?我試圖在viewDivLoad之外聲明myView,但這是不允許的。
這是一個名爲「可變範圍」的概念。基本上,你不能聲明一些東西 - 在這種情況下,一個名爲「myView」的UIView在一個函數中,並在第二個函數中引用它。您需要在比viewDidLoad更廣的範圍內定義視圖。例如,將它定義爲一個「實例變量」 - 在你的視圖控制器內但在任何函數之外,然後刪除'viewDidLoad'中的'var'。 (僅供參考,你正在做一些新手的錯誤,比如使用自動佈局來設置幀。使用你的代碼,嘗試在iPhone 4s和iPhone 7上運行它,你會看到我在說什麼。) – dfd