範例是在書上看到的,不過程式碼我有改過,因為Swift 3 出來了,而市面書上的範例程式碼... 你懂的
這篇主要是講後端生成程式碼 以Button為例
yourButtonName.addTarget(self, action:#selector(functionName(sender:)), for: .touchUpInside)
fun functionName(sender:UIButton) {
//....
}
action 這邊 如果沒有回傳值 (sender:) 就不用加了
View 的截圖 自訂12個按鈕
Controller全部程式碼
class ViewController: UIViewController {
@IBOutlet weak var labelTel: UITextField!
@IBOutlet weak var labelMsg: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
for i in 0...11 {
let x:Int = 100 + (i % 4) * 60
let y:Int = 140 + (i / 4) * 60
let buttonNumber:UIButton = UIButton(type: UIButtonType.system) as UIButton
//按鈕位置 大小
buttonNumber.frame = CGRect(x: x,y: y,width: 40, height: 35)
//文字顏色
buttonNumber.setTitleColor(UIColor.white, for: UIControlState.normal)
//按鈕背景
buttonNumber.backgroundColor = UIColor.black
//字型大小
buttonNumber.titleLabel?.font = UIFont(name: "System", size: 22.0)
if i == 10 {
buttonNumber.setTitle("X", for: UIControlState.normal)
//加入事件 #selector(funcName(sender:)) 函數是有參數的
buttonNumber.addTarget(self, action:#selector(clearClick(sender:)), for: .touchUpInside)
} else if i == 11 {
buttonNumber.setTitle("OK", for: UIControlState.normal)
buttonNumber.addTarget(self, action:#selector(sureClick(sender:)), for: UIControlEvents.touchUpInside)
}else {
buttonNumber.setTitle("\(i)", for: UIControlState.normal)
buttonNumber.addTarget(self, action:#selector(numberClick(sender:)), for: UIControlEvents.touchUpInside)
}
//加入按鈕
view.addSubview(buttonNumber)
}
}
func sureClick(sender:UIButton) {
if labelTel.text?.lengthOfBytes(using: String.Encoding.utf8) == 10 {
labelMsg.text = "Call " + labelTel.text!
} else if labelTel.text == "" {
labelMsg.text = "Please enter your phone number."
} else if (labelTel.text?.lengthOfBytes(using: String.Encoding.utf8))! > 10{
labelMsg.text = "Error"
}
}
func clearClick(sender:UIButton){
labelTel.text = ""
labelMsg.text = ""
}
func numberClick(sender:UIButton) {
labelTel.text = labelTel.text! + sender.currentTitle!
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

沒有留言:
張貼留言