我使用Swift 3创建了一个UIButton,我希望它在按下时打印一些消息。
所以我做了这样的事情: 在loadView()
中button.addTarget(self, action: #selector(ViewController.pressButton(button:)), for: .touchUpInside)
方法:
func pressButton(button: UIButton) {
NSLog("pressed!")
}
但是当我点击按钮时没有任何反应。
答案 0 :(得分:27)
在viewDidLoad
中添加按钮代码,它将适合您:
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
button.backgroundColor = UIColor.gray
button.addTarget(self, action: #selector(pressButton(button:)), for: .touchUpInside)
self.view.addSubview(button)
}
func pressButton(button: UIButton) {
NSLog("pressed!")
}
您无需将ViewController.pressButton
添加到selector
,只需function name
即可。
Swift 4.x版本:
let button = UIButton(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
button.backgroundColor = .gray
button.tag = 0
button.addTarget(self, action: #selector(pressButton(_:)), for: .touchUpInside)
self.view.addSubview(button)
@objc func pressButton(_ button: UIButton) {
print("Button with tag: \(button.tag) clicked!")
}
答案 1 :(得分:6)
在Swift3中试试这个!
button.addTarget(self, action: #selector(self.pressButton(button:)), for: .touchUpInside)
@objc func pressButton(button: UIButton) { NSLog("pressed!") }
答案 2 :(得分:5)
使用以下代码。
button.addTarget(self, action: #selector(FirstViewController.cartButtonHandler), for: .touchUpInside)
您的班级名称对应 FirstViewController
您的选择器对应于以下功能
func cartButtonHandler() {
}
答案 3 :(得分:3)
在swift 3中使用它 -
function getListofItems($itemcode,$leaftype,$color)
{
$this->db->select('*')->from("tbl_search_list");
$this->db->where('itemcode' => $itemcode);
if(is_array($leaftype) && count($leaftype) > 0)
$this->db->where_in('leaftype', $leaftype);
if(is_array($color) && count($color) > 0)
$this->db->where_in('color', $color);
$this->db->order_by('flag', 'ASC');
if ($query->num_rows() > 0)
return $query->result();
}
例如(来自我的代码) -
object?.addTarget(objectWhichHasMethod, action: #selector(classWhichHasMethod.yourMethod), for: someUIControlEvents)
如果您希望将发件人作为参数,请在方法名称后面添加self.datePicker?.addTarget(self, action:#selector(InfoTableViewCell.datePickerValueChanged), for: .valueChanged)
。
答案 4 :(得分:0)
您提到addTarget
来电是loadView()
。这是你的自定义子视图,还是viewController?
在您的选择器中,它定位了ViewController
类中的方法,但如果此操作的target
是视图本身,那么该操作不是有意义的经历。
如果您在viewController中声明了按钮,并在viewDidLoad
中添加了此目标,则应在您正在寻找时打印该消息。我相信你是"目标"你的行动是错误的阶级。
答案 5 :(得分:0)
let cancelButton = UIButton.init(frame: CGRect(x: popUpView.frame.size.width/2, y: popUpView.frame.size.height-20, width: 30, height: 30))
cancelButton.backgroundColor = UIColor.init(patternImage: UIImage(named: cancelImage)!)
cancelButton.addTarget(self, action: #selector(CommentsViewController.canceled), for:.touchUpInside)
答案 6 :(得分:0)
override func viewDidLoad()
方法确保您的操作处理程序标记为@IBAction,如下所示:
@IBAction func pressButton(button:UIButton){ 打印( “按下!”) }
然后它会起作用!