快速以编程方式创建后如何在情节提要中链接 UIButton

Posted

技术标签:

【中文标题】快速以编程方式创建后如何在情节提要中链接 UIButton【英文标题】:How to link UIButton in the storyboard after it has been created programmatically in swift 【发布时间】:2019-07-13 17:33:58 【问题描述】:

我以编程方式创建了一个 UIImageView 和 UIButton 来设置约束,但我不确定如何将其添加到我的故事板中。我希望 UIImageView 和 UIButton 在以编程方式创建后显示在情节提要上。我该怎么做?我是 swift 新手,如果真的很简单,我很抱歉。

在添加约束并修改其文本/图像之前,我尝试从情节提要中添加一个@IBOutlet,但它不起作用。


class LaunchViewController: UIViewController 

    let logoImageView: UIImageView = 
        let imageView = UIImageView()
        let logoImage = UIImage(named: "logo")
        imageView.image = logoImage
        imageView.translatesAutoresizingMaskIntoConstraints = false
        return imageView
    ()

    let signUpButton: UIButton = 
        let signUpButton = UIButton.init(type: .system)
        signUpButton.frame = CGRect(x: 20, y: 20, width: 2, height: 20)
        signUpButton.setTitle("Sign Up.", for: .normal)
        signUpButton.addTarget(self, action: #selector(buttonClicked(sender:)), for: .touchUpInside)
        signUpButton.translatesAutoresizingMaskIntoConstraints = false
        return signUpButton
    ()
    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        view.addSubview(logoImageView)
        view.addSubview(signUpButton)
        setUpLayout()

    

    @objc func buttonClicked(sender:UIButton!)
        print("..")
    

    private func setUpLayout()

        logoImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        logoImageView.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
        logoImageView.widthAnchor.constraint(equalToConstant: 220).isActive = true
        logoImageView.heightAnchor.constraint(equalToConstant: 200).isActive = true

        signUpButton.topAnchor.constraint(equalTo: logoImageView.bottomAnchor, constant: 300).isActive = true
        signUpButton.leftAnchor.constraint(equalTo: view.leftAnchor,constant: 250).isActive = true
        signUpButton.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
        signUpButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true
       

我以编程方式获得了预期结果,但我需要将其添加到情节提要中以执行转场。

【问题讨论】:

【参考方案1】:

对于 storybard 链接声明如下

@IBOutlet weak var logoImageView: UIImageView!
@IBOutlet weak var signUpButton: UIButton!

然后在情节提要中添加项目并将它们链接到上面的变量

顺便说一句,您不必使用 storbaord 来执行 segue,您可以以编程方式使用 present/push

【讨论】:

我试过这个,但是在声明 IBOutlets 之后是否可以修改内容。例如,我尝试在链接 IBOutlet 后以编程方式在 UIImageView 中添加图像(logoImageView.image = UIImage(named: "logo")),但没有成功。 为什么不在情节提要中也设置呢?你在viewDidLoad里面试过了吗 非常感谢!我从未尝试将其添加到 viewDidLoad 中!听起来像一个简单的错误。

以上是关于快速以编程方式创建后如何在情节提要中链接 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式快速使用情节提要 ID 获取当前视图控制器(当前正在呈现)?

如何以编程方式更改使用自动布局在情节提要上创建的 UIImageView 的大小?

如果一切都是以编程方式创建而不使用情节提要,如何以编程方式调整 TableView 中单元格的高度?

如何摆脱或更改情节提要以编程方式创建 segue

以编程方式添加的视图对象未显示在情节提要中

如何以编程方式从情节提要中填充静态 UITableView?