【问题标题】:action:@selector in Objective-C [duplicate]动作:Objective-C中的@selector [重复]
【发布时间】:2012-04-30 07:29:25
【问题描述】:

可能重复:
How can I send two arguments in a selector method?

我正在为一个按钮编写一个动作。但是我作为选择器编写的方法需要两个参数。我将如何在代码中编写方法名称:

action:@selector(myMethod)

【问题讨论】:

  • -1,此用户可以动态更改问题..!
  • 这是不可能的,你只能使用一个参数。顺便说一句,这个问题在 SO 上已经被问过很多次了。
  • @Dinesh 每个用户都可以 - 在 5 分钟内您可以在不触发编辑事件的情况下。
  • @Danish:抱歉,这是 stackOverflows 问题。我写了你几个小时前回答的问题,但决定不提交。在尝试提交这个新问题时,我在标签上犯了一个错误,所以我修复了它并提交了 - 令我惊讶的是几个小时前的问题。但是感谢您的回复,快速且正确

标签: objective-c ios button action selector


【解决方案1】:

传递给“动作”方法的唯一参数是sender,它是触发动作的视图(它是可选的)。所以你不能将多个参数传递给一个动作方法,因为没有多个参数要发送。

但是您可以简单地从您的操作中调用另一个方法,该方法可以包含您想要的任何参数。

- (void)viewDidLoad {
  myButton.action = @sel(myAction);
}

- (void)myAction {
  [self someMethod:@"first argument" withOtherArg:@"second argument"];
}

【讨论】:

    【解决方案2】:

    第一件事:在提出新问题之前,你应该接受更多的答案,人们往往不会帮助你。

    答案:

    使用字典,您可以在其中放置要作为参数传递的 2 个值。这样一来,您将只需要传递一个参数(字典本身)。它使代码更简洁,并让您可以灵活地在将来需要时传递更多参数。别忘了留下一些cmets,这样你就不会忘记你在字典里放了什么。

    【讨论】:

    • 这个解决方案是不可能的,因为我认为 uibutton 只会发送自己。 (当然,除非您将其子类化)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2013-03-27
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2011-08-08
    • 2011-08-22
    相关资源
    最近更新 更多