
我看到一些示例代码,将相同的OnClick事件分配给AndroID中的所有按钮(即使它们执行完全不同的 *** 作).怎么可以用Swift呢?
AndroID示例:
@OverrIDe public voID onCreate(Bundle savedInstanceState) { button1.setonClickListener(onClickListener); button2.setonClickListener(onClickListener); button3.setonClickListener(onClickListener);} private OnClickListener onClickListener = new OnClickListener() { @OverrIDe public voID onClick(VIEw v) { switch(v.getID()){ case R.ID.button1: //DO something break; case R.ID.button2: //DO something break; case R.ID.button3: //DO something break; } } }; 解决方法 在iOS上,您没有设置监听器;您将UIControl(UIbutton是其子类)中的一个目标(一个对象)和一个动作(方法签名“iOS选项”中的选择符): button1.addTarget(self,action: "buttonClicked:",for: .touchUpInsIDe)button2.addTarget(self,for: .touchUpInsIDe)button3.addTarget(self,for: .touchUpInsIDe)
第一个参数是目标对象,在这种情况下是self.动作是一个选择器(方法签名),基本上有两个选项(稍后再说). control event是一个特定于UIControl – .touchUpInsIDe通常用于点击一个按钮.
现在,行动.这是一种以下格式之一的方法(您的选择):
func buttonClicked()func buttonClicked(_ sender: AnyObject?)
要使用第一个使用“buttonClicked”,对于第二个(您要在此处)使用“buttonClicked”(带有冒号).发件人将是事件的来源,换句话说,您的按钮.
func buttonClicked(_ sender: AnyObject?) { if sender === button1 { // do something } else if sender === button2 { // do something } else if sender === button3 { // do something }} (这假设button1,button2和button3是实例变量).
而不是使用大开关语句的这种方法,请考虑为每个按钮使用单独的方法.根据您的具体用例,任何一种方法可能会更好:
func button1Clicked() { // do something}func button2Clicked() { // do something}func button3Clicked() { // do something} 在这里,我甚至不使用发件人参数,因为我不需要它.
P.S .:不是以编程方式添加目标和 *** 作,您可以在Storyboard或nib文件中执行此 *** 作.为了公开您将IBAction放在您的功能前面的 *** 作,例如:
@IBAction func button1Clicked() { // do something} 总结 以上是内存溢出为你收集整理的xcode – 在Swift中以编程方式设置Action Listener全部内容,希望文章能够帮你解决xcode – 在Swift中以编程方式设置Action Listener所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)