gpt4 book ai didi

iphone - 在按钮操作上传递参数 :@selector

转载 作者:行者123 更新时间:2023-12-03 18:11:26 25 4
gpt4 key购买 nike

我想将动态生成的按钮中的电影 URL 传递给 MediaPlayer:

[button addTarget:self action:@selector(buttonPressed:) withObject:[speakers_mp4 objectAtIndex:[indexPath row]] forControlEvents:UIControlEventTouchUpInside];

但是action:@selector() withObject:不起作用?

还有其他解决办法吗?

感谢您的帮助!

最佳答案

编辑。找到了一种更简洁的方法!

按钮可以接收的一个参数是(id)sender。这意味着您可以创建一个继承自 UIButton 的新按钮,它允许您存储其他预期的参数。希望这两个片段说明了该怎么做。

  myOwnbutton.argOne = someValue
[myOwnbutton addTarget:self action:@selector(buttonTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];

- (IBAction) buttonTouchUpInside:(id)sender {
MyOwnButton *buttonClicked = (MyOwnButton *)sender;
//do as you please with buttonClicked.argOne
}
<小时/>

这是我最初的建议。

有一种方法可以达到相同的结果,但它并不漂亮。假设您想向 navigate 方法添加一个参数。下面的代码不允许您将该参数传递给navigate

[button addTarget:self action:@selector(navigate) forControlEvents:UIControlEventTouchUpInside];

要解决这个问题,您可以将导航方法移动到它自己的类中,并将“参数”设置为该类的属性...

NavigationAid *navAid = [[NavigationAid alloc] init];
navAid.firstParam = someVariableOne
navAid.secondParam = someVariableTwo
[button addTarget:navAid action:@selector(navigate) forControlEvents:UIControlEventTouchUpInside];

当然你可以将navigate方法保留在原始类中并由navAid调用它,只要它知道在哪里可以找到它。

NavigationAid *navAid = [[NavigationAid alloc] init];
navAid.whereToCallNavigate = self
navAid.firstParam = someVariableOne
navAid.secondParam = someVariableTwo
[button addTarget:navAid action:@selector(navigate) forControlEvents:UIControlEventTouchUpInside];

就像我说的,它并不漂亮,但它对我有用,而且我还没有发现任何人建议任何其他可行的解决方案。

关于iphone - 在按钮操作上传递参数 :@selector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com