菜鸟教程小白 发表于 2022-12-13 12:12:00

ios - 以编程方式添加和更改自定义 UIView (Swift)


                                            <p><p>我正在尝试创建一个可以在其他 UIViewControllers 中使用的自定义 UIView。</p>

<p>自定义 View :</p>

<pre><code>import UIKit

class customView: UIView {

    override init(frame: CGRect) {

      super.init(frame:frame)

      let myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 250, height: 100))
      addSubview(myLabel)
    }

    required init?(coder aDecoder: NSCoder) {
      super.init(coder: aDecoder)
    }
}
</code></pre>

<p>然后我想将它添加到单独的 UIViewController 中:</p>

<pre><code>let newView = customView(frame:CGRectMake(0, 0, 500, 400))
self.view.addSubview(newView)
</code></pre>

<p>这可以显示 View ,但我需要添加什么才能更改嵌入 customView 的 UIViewController 的属性(例如 myLabel)?</p>

<p>我希望能够从 viewController 访问和更改标签,允许我更改文本、alpha、字体或使用点表示法隐藏标签:</p>

<pre><code>newView.myLabel.text = &#34;changed label!&#34;
</code></pre>

<p>现在尝试访问标签会出现错误“'customView' 类型的值没有成员 'myLabel'”</p>

<p>非常感谢您的帮助!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这是因为属性 <code>myLabel</code> 未在类级别声明。将属性声明移动到类级别并将其标记为公共(public)。然后,您将能够从外部访问它。 </p>

<p>类似</p>

<pre><code>import UIKit

class customView: UIView {

    public myLabel: UILabel?   
    override init(frame: CGRect) {

      super.init(frame:frame)

      myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 250, height: 100))
      addSubview(myLabel!)
    }

    required init?(coder aDecoder: NSCoder) {
      super.init(coder: aDecoder)
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 以编程方式添加和更改自定义 UIView (Swift),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34080434/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34080434/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 以编程方式添加和更改自定义 UIView (Swift)