我对Swift编码相对较新,而且我正在更新当前在应用商店中的应用。我目前正在为单元格中的内容创建一个数组,用于我在xib文件中创建的tableView。这是它的样子:
`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)
我希望能够将其合并到数组(callBtn)中,这样我就可以创建多个可以调用不同数字的按钮。
答案 0 :(得分:0)
单元格应该拥有视图(例如按钮),您的数据应该用于装饰这些视图。因此,如果您从数据中移除UI问题,例如使用按钮标题字符串替换UIButton引用,您可以将该数据应用于cellForRowAt
方法中的单元格视图。
答案 1 :(得分:0)
在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)
}