【问题标题】:Question about Objective-C selectors; Can I use parameters and how?关于 Objective-C 选择器的问题;我可以使用参数吗?如何使用?
【发布时间】:2011-06-26 06:11:31
【问题描述】:

我正在尝试使用带参数的选择器,但这样做时失败了。我来自 C/++,选择器有点令人困惑。我有这个代码:

playItem = [CCMenuItemLabel itemWithLabel:playLabel target:self selector:@selector(goToScene:)argumentHere];

我将如何以这种方式将参数传递给方法?

提前致谢:D

【问题讨论】:

    标签: iphone objective-c methods cocos2d-iphone selector


    【解决方案1】:

    你不能。选择器只指定要调用的方法,而不是要传递的参数。

    您可以做的是在您的goToScene: 方法中检查sender 参数。这将是执行操作的元素(在您的情况下很可能是CCMenuItemLabel)。
    因此,您可以查看调用了哪个元素(如果您对多个 ui 元素使用goToScene:)并决定使用哪个“参数”。

    为了区分不同的ui元素,经常使用tag属性。所以,代码可能看起来像

    if ([sender tag] == 1) {
        ...
    } else if ...
    

    如果您不喜欢太多的 if,可以使用查找表。

    【讨论】:

    • 当。好吧,那好吧。我想知道,因为我认为制作一种方法然后传递我想要切换到的场景而不是每个场景制作一种方法会更容易。谢谢
    • @epicasian 您可以为每个场景创建一个方法,然后从中调用具有适当参数的通用方法。
    【解决方案2】:

    您是否正在寻找performSelector:withObject?恐怕我不太明白你的问题。

    Nikita 是对的,当您设置选择器时,您只需传入描述符名称。稍后在您的代码中,当您调用该方法时,您将传入任何参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-26
      • 2019-05-10
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多