代码之家  ›  专栏  ›  技术社区  ›  Linda Young

将UIButton添加到数组

  •  0
  • Linda Young  · 技术社区  · 7 年前

    `struct callData {
        let cell : Int?
        let hotlineName : String?
        let phoneNumber : String?
        let callBtn : UIButton?
        let iconImg : UIImage?
    
        init(cell:Int,hotlineName:String,phoneNumber:String, callBtn:UIButton, iconImg:UIImage) {
            self.cell = cell
            self.hotlineName = hotlineName
            self.phoneNumber = phoneNumber
            self.callBtn = callBtn
            self.iconImg = iconImg
    
        }
    }
    
    class _ViewController: UIViewController, UITableViewDelegate,UITableViewDataSource {
    
        @IBOutlet weak var tableView: UITableView!
    
        var arrayOfCallData = [callData(
                cell: 0,
                hotlineName:"",
                phoneNumber:"",
                callBtn:"",
                iconImg: #imageLiteral(resourceName: "smartphone")
            )]
    

    我不知道如何将按钮(callBtn)插入数组(arrayOfCallData),而不让它提供大量错误。它的目的是从应用程序的字符串中调用数字,但我不知道如何实现按钮调用的操作。 以下是从应用程序中调用的代码示例:

    let url = NSURL(string: "tel://8004424673")! UIApplication.shared.open(url as URL)

    2 回复  |  直到 7 年前
        1
  •  0
  •   Basheer    7 年前

    在callData中,将电话号码另存为callBtnAction,您可以通过选择器方法将其取回。

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
        let cellIdendifier: String = "CallDataCell"
    
        let cellData = arrayOfCallData[indexPath.row]
    
        let cell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: cellIdendifier, for: indexPath)
        let button = UIButton.init()
        button.frame = CGRect.zero //Set your frame here
        button.setTitle(cellData.callBtnText, for: UIControlState.normal)
        button.tag = indexPath.row
        button.addTarget(self, action: Selector(("buttonClicked:")), for: UIControlEvents.touchUpInside)
    
        cell.addSubview(button)
        return cell
    
    }
    
    func buttonClicked(sender:UIButton) {
        let selectedRow = sender.tag
        let callData = arrayOfCallData[selectedRow]
        let action = callData.callBtnAction
        print(action)
    
    }
    
        2
  •  0
  •   Norman    7 年前

    cellForRowAt