快速以编程方式创建后如何在情节提要中链接 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 的大小?