如何在具有不同内容的控制器中多次使用自定义UIView?

Pogbamessi

我已经为必须在屏幕上显示的弹出窗口创建了自己的自定义UIView。我的UIView看起来像这样:

class HelpTipsPopover: UIView {

weak var title: UILabel!
weak var myText: UILabel!

override init(frame: CGRect) {
    super.init(frame: frame)

    let strongTitle = UILabel()
    title = strongTitle
    let strongMyText = UILabel()
    myText = strongMyText

    self.addSubview(strongTitle)
    title.translatesAutoresizingMaskIntoConstraints = false
    if selected == true{
    title.text = "Search"
    title.font = UIFont(name: "HelveticaNeue-Bold", size: 12)
    title.textColor = UIColor.TRLMBlueBlackColor()


    let leftConstraint = NSLayoutConstraint(item: title, attribute: .Leading, relatedBy: .Equal, toItem: self, attribute: .Leading, multiplier: 1.0, constant: 10)
    let topConstraint = NSLayoutConstraint(item: title, attribute: .Top, relatedBy: .Equal, toItem: self, attribute: .Top, multiplier: 1.0, constant: 10)
    self.addConstraints([leftConstraint, topConstraint])

    self.addSubview(strongMyText)
    myText.translatesAutoresizingMaskIntoConstraints = false
    myText.text = "Search equities to view the order book and market prints for specific moments in time."
    myText.numberOfLines = 0
    myText.lineBreakMode = NSLineBreakMode.ByWordWrapping
    myText.font = UIFont(name: "Helvetica Neue", size: 12)
    myText.textColor = UIColor.TRLMBlueBlackColor()



    let leftDescription = NSLayoutConstraint(item: myText, attribute: .Leading, relatedBy: .Equal, toItem: self, attribute: .Leading, multiplier: 1.0, constant: 10)
    let rightDescription = NSLayoutConstraint(item: myText, attribute: .Trailing, relatedBy: .Equal, toItem: self, attribute: .Trailing, multiplier: 1.0, constant: 10)
    let topDescription = NSLayoutConstraint(item: myText, attribute: .Top, relatedBy: .Equal, toItem: title, attribute: .Bottom, multiplier: 1.0, constant: 5)
    self.addConstraints([leftDescription, topDescription, rightDescription])

}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!
}

}

现在,我必须在视图控制器中显示三个弹出窗口,每个弹出窗口中的标题和文本都不同。这是我的View Controller中显示这些弹出框的方法:

 func showPopover(){
    self.view.addSubview(helpTipsPopover)
    helpTipsPopover.tag = 1
    helpTipsPopover.translatesAutoresizingMaskIntoConstraints = false
    helpTipsPopover.layer.cornerRadius = 6
    helpTipsPopover.backgroundColor = UIColor(white: 1.0, alpha: 0.8)
    let leftConstraint = NSLayoutConstraint(item: helpTipsPopover, attribute:       .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1.0, constant: 10)
    let topConstraint = NSLayoutConstraint(item: helpTipsPopover, attribute: .Top, relatedBy: .Equal, toItem: self.hotSpotOne, attribute: .Bottom, multiplier: 1.0, constant: 4)
    let widthConstraint = NSLayoutConstraint(item: helpTipsPopover, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 200)
    let heightConstraint = NSLayoutConstraint(item: self.helpTipsPopover, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 80)
    self.view.addConstraints([leftConstraint, topConstraint, widthConstraint, heightConstraint])
    }


func showPopoverTwo(){
    self.view.addSubview(helpTipsPopover)
    helpTipsPopover.tag = 1
    helpTipsPopover.translatesAutoresizingMaskIntoConstraints = false
    helpTipsPopover.layer.cornerRadius = 6
    helpTipsPopover.backgroundColor = UIColor(white: 1.0, alpha: 0.8)
    let centerConstraint = NSLayoutConstraint(item: helpTipsPopover, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1.0, constant: 0)
    let topConstraint = NSLayoutConstraint(item: helpTipsPopover, attribute: .Top, relatedBy: .Equal, toItem: self.hotSpotTwo, attribute: .Bottom, multiplier: 1.0, constant: 4)
    let widthConstraint = NSLayoutConstraint(item: helpTipsPopover, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 200)
    let heightConstraint = NSLayoutConstraint(item: self.helpTipsPopover, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 80)
    self.view.addConstraints([centerConstraint, topConstraint, widthConstraint, heightConstraint])

}

现在,我要实现以下目标:

在此处输入图片说明

因此,每个弹出窗口都应具有不同的标题和文本,但我想重用相同的UIView。任何帮助表示赞赏。谢谢!

大卫·史密斯

修改您的初始化方法

init(frame: CGRect, titleString: String, bodyString: String) {
  super.init(frame: frame)
  // Your current initializer

  title.text = titleString
  myText.text = bodyString

}

然后,您可以像这样初始化弹出窗口:

let frame = CGRectMake(0,0,180,100)
let titleString = "My Custom Title"
let bodyString = "This is a body. I'm explaining things to you here."
helpTipsPopoverOne = HelpTipsPopover(frame: frame, titleString: titleString, bodyString: bodyString)

修改您的显示方法以将弹出窗口作为参数。然后,您可以创建弹出窗口,并以任何您想要的文本显示!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在SAP UI中的控制器中定义自定义控制器?

来自分类Dev

如何在控制器中的Laravel中使用自定义防护登录用户

来自分类Dev

如何在ASP.NET MVC中的控制器中使用自定义方法

来自分类Dev

如何在具有两个自定义UITableViewCells的一个视图控制器中创建两个表视图?

来自分类Dev

Rails / ActiveAdmin - 如何将自定义数据从控制器传递到内容中

来自分类Dev

在AngularJS中使用带有自定义指令的不同控制器?

来自分类Dev

具有自定义基本控制器的控制器不起作用

来自分类Dev

如何在Sails中自定义控制器中的创建

来自分类Dev

如何在Sails中自定义控制器中的创建

来自分类Dev

如何在Rails 4中添加要设计的自定义字段并自定义注册控制器?

来自分类Dev

如何在Codeigniter控制器中访问自定义配置变量

来自分类Dev

如何在自定义控制器操作中呈现jsonapi-resources响应?

来自分类Dev

如何在Ruby on Rails中添加自定义路线,控制器和动作?

来自分类Dev

如何在Symfony的控制器中自定义验证错误消息

来自分类Dev

如何在控制器Laravel中添加自定义数据

来自分类Dev

如何在自定义指令中访问控制器数据集

来自分类Dev

如何在视图控制器的背景中设置自定义颜色

来自分类Dev

如何在控制器中调用$ resource自定义方法

来自分类Dev

如何在Umbraco 7.5.8中将自定义模型发布到控制器?

来自分类Dev

如何在我的自定义导航控制器中隐藏标签栏?

来自分类Dev

如何在自定义控制器操作中显示本机 DNN 弹出窗口?

来自分类Dev

如何在 Laravel 5.6 中向资源控制器添加自定义方法

来自分类Dev

如何在自定义命令中重用 Laravel 控制器代码

来自分类Dev

如何在Twig中使用我的php(自定义控制器?)

来自分类Dev

与视图控制器内的自定义 UIView 交互

来自分类Dev

如何使用RSpec在控制器中测试自定义路由

来自分类Dev

自定义UIView XIB中的iOS导航后退按钮(不带导航控制器)

来自分类Dev

从视图控制器中删除特定的自定义视图、uiview、textview 等

来自分类Dev

使用Entity Framework MVC ASP.NET创建具有自定义类型的控制器时出错

Related 相关文章

  1. 1

    如何在SAP UI中的控制器中定义自定义控制器?

  2. 2

    如何在控制器中的Laravel中使用自定义防护登录用户

  3. 3

    如何在ASP.NET MVC中的控制器中使用自定义方法

  4. 4

    如何在具有两个自定义UITableViewCells的一个视图控制器中创建两个表视图?

  5. 5

    Rails / ActiveAdmin - 如何将自定义数据从控制器传递到内容中

  6. 6

    在AngularJS中使用带有自定义指令的不同控制器?

  7. 7

    具有自定义基本控制器的控制器不起作用

  8. 8

    如何在Sails中自定义控制器中的创建

  9. 9

    如何在Sails中自定义控制器中的创建

  10. 10

    如何在Rails 4中添加要设计的自定义字段并自定义注册控制器?

  11. 11

    如何在Codeigniter控制器中访问自定义配置变量

  12. 12

    如何在自定义控制器操作中呈现jsonapi-resources响应?

  13. 13

    如何在Ruby on Rails中添加自定义路线,控制器和动作?

  14. 14

    如何在Symfony的控制器中自定义验证错误消息

  15. 15

    如何在控制器Laravel中添加自定义数据

  16. 16

    如何在自定义指令中访问控制器数据集

  17. 17

    如何在视图控制器的背景中设置自定义颜色

  18. 18

    如何在控制器中调用$ resource自定义方法

  19. 19

    如何在Umbraco 7.5.8中将自定义模型发布到控制器?

  20. 20

    如何在我的自定义导航控制器中隐藏标签栏?

  21. 21

    如何在自定义控制器操作中显示本机 DNN 弹出窗口?

  22. 22

    如何在 Laravel 5.6 中向资源控制器添加自定义方法

  23. 23

    如何在自定义命令中重用 Laravel 控制器代码

  24. 24

    如何在Twig中使用我的php(自定义控制器?)

  25. 25

    与视图控制器内的自定义 UIView 交互

  26. 26

    如何使用RSpec在控制器中测试自定义路由

  27. 27

    自定义UIView XIB中的iOS导航后退按钮(不带导航控制器)

  28. 28

    从视图控制器中删除特定的自定义视图、uiview、textview 等

  29. 29

    使用Entity Framework MVC ASP.NET创建具有自定义类型的控制器时出错

热门标签

归档