実現したいこと
現在コードでlabelを記述するようにしているのですが、別のクラス(Layout.swift)から参照したい。
ViewControllr内にfunctionとして書き出すことはできたのですが、パーツが多くなってくるとどうしても縦長になってしまうのでレイアウトに関する記述は、可能ならばレイアウト用のファイルに書きたいと考えております。
発生している問題・エラーメッセージ
Instance member 'label' cannot be used on type 'ViewController'; did you mean to use a value of this type instead?
訳:
インスタンスメンバー「label」はタイプ「ViewController」では使用できません。 代わりにこのタイプの値を使用するつもりでしたか?
該当のソースコード
swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 let label = UILabel() 6 let button1 = UIButton() 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 11 Layout.testLabel() 12 } 13}
swift
1import Foundation 2class Layout { 3 4 //ラベルを配置 5 class func testLabel() { 6 7 ViewController.label.text = "Label" 8 ViewController.label.frame = CGRect(x: 0, y: 0, width: 100, height: 100) 9 10 ViewController.view.addSubview(ViewController.label) 11 12 } 13} 14
試したこと
ViewController内にfunctionとして書き出すことはできたが、別クラス(Layout.swift)では上手くいかず。
このようなことは可能でしょうか?
詳しい方いらっしゃいましたら、ご教授願います。
よろしくお願いいたします。
追記2022.05.16 20:16
swift
1import Foundation 2class Layout { 3 4 //ラベルを配置 5 func testLabel() { 6 let test = ViewController() 7 test.label.text = "Label" 8 9 test.label.frame = CGRect(x: 100 //←ここでスコープエラー 10 , y: 100 11 , width: 100 12 , height: 100) 13 14 test.view.addSubview(test.label) 15 16 } 17}
少し進んだのですがCGRectにアクセスできない状態です。
let testView = UIView()
var testView = UIView()
let label → var label
等を思いついたのですが、CGRectはどうすれば通して、配置で切るのでしょうか?
ご存知の方いらっしゃいましたら、ご教授願います。
回答1件
あなたの回答
tips
プレビュー