Prog创建的课程按钮不会出现 - Swift IOS

时间:2016-09-19 11:32:48

标签: swift xcode uibutton

我尝试根据数组的大小自动在视图中添加一些customClass按钮。

创建了类并在类中调用了适当的方法,但没有显示任何内容。调试告诉我该方法按预期调用/执行(3x)。

当我将函数直接添加到视图控制器时,它确实有效。

我在这里缺少什么?

ViewController代码:

import UIKit

class ViewController: UIViewController {

let userArray: [String] = ["One","Two","Three"]

  override func viewDidLoad() {
    super.viewDidLoad()

    for item in userArray {
        CustomCheckBox().showNewButton()
    }
  }

.. Other stuff...
}

CustomButton类代码:

{
import UIKit

class CustomCheckBox: UIButton {

let checkedImage: UIImage  = UIImage(named:"chckbox_on")!  
let uncheckedImage: UIImage = UIImage(named: "chckbox_off")!  
var newButton: CustomCheckBox!      

..... other functions (isChecked, buttonClicked, ..)

func showNewButton (){
    newButton = CustomCheckBox (type: UIButtonType.Custom)
    newButton.bounds = CGRect(x: 0, y: 0, width: 45, height: 45)
    newButton.center = CGPoint(x: 40, y: 40)
    newButton.addTarget(newButton, action: #selector(CustomCheckBox.buttonClicked(_:)), forControlEvents: UIControlEvents.TouchUpInside)
    newButton.isChecked=false
    self.addSubview(newButton)
  }
}

2 个答案:

答案 0 :(得分:0)

可以考虑像这样重构你的代码

class CustomCheckBoxContainer: UIView {
    var newButton: CustomCheckBox!


    func showNewButton (){
        newButton = CustomCheckBox (type: UIButtonType.custom)
        newButton.bounds = CGRect(x: 0, y: 0, width: 45, height: 45)
        newButton.center = CGPoint(x: 40, y: 40)
        newButton.addTarget(newButton, action: #selector(CustomCheckBox.buttonClicked(_:)), for: UIControlEvents.TouchUpInside)
        newButton.isChecked=false
        self.addSubview(newButton)
    }



}

class CustomCheckBox: UIButton {
    let checkedImage: UIImage  = UIImage(named:"chckbox_on")!
    let uncheckedImage: UIImage = UIImage(named: "chckbox_off")!

//add here all your button functionality
}

然后更改你的视图加载到这样的东西:

override func viewDidLoad() {
    super.viewDidLoad()

    for item in userArray {
        let customCheckBoxContainer = CustomCheckBoxContainer()
        customCheckBoxContainer.showNewButton()
        self.view.addSubview(customCheckBoxContainer)
    }
}

答案 1 :(得分:0)

将您当前的View作为函数的参数传递给您。

override func viewDidLoad() {
    super.viewDidLoad()

    for item in userArray {
        CustomCheckBox().showNewButton(self.view)
    }
}

像这样修改自定义UIButton函数newButton

func showNewButton (currentView : UIView){
    newButton = CustomCheckBox (type: UIButtonType.Custom)
    newButton.bounds = CGRect(x: 0, y: 0, width: 45, height: 45)
    newButton.center = CGPoint(x: 40, y: 40)
    newButton.addTarget(newButton, action: #selector(CustomCheckBox.buttonClicked(_:)), forControlEvents: UIControlEvents.TouchUpInside)
    newButton.isChecked=false
    currentView.addSubview(newButton)
}