我正在嘗試使用帶參數的選擇器,並在這樣做時失敗。我來自C/++,選擇器有點混亂。我有這樣的代碼:關於Objective-C選擇器的問題;我可以使用參數和如何?
playItem = [CCMenuItemLabel itemWithLabel:playLabel target:self selector:@selector(goToScene:)argumentHere];
我該如何去通過這種方法傳遞參數?
在此先感謝:D
我正在嘗試使用帶參數的選擇器,並在這樣做時失敗。我來自C/++,選擇器有點混亂。我有這樣的代碼:關於Objective-C選擇器的問題;我可以使用參數和如何?
playItem = [CCMenuItemLabel itemWithLabel:playLabel target:self selector:@selector(goToScene:)argumentHere];
我該如何去通過這種方法傳遞參數?
在此先感謝:D
您不能。選擇器僅指定要調用的方法,不指定要傳遞的參數。
你可以做的是在你的goToScene:
方法中檢查sender
參數。這將是執行操作的元素(最有可能的是CCMenuItemLabel
)。
因此,您可以看到哪個元素被調用(如果您使用goToScene:
用於多個UI元素)並決定使用哪個「參數」。
要分辨不同的UI元素,通常使用tag
屬性。所以,代碼可能看起來像
if ([sender tag] == 1) {
...
} else if ...
如果你不喜歡太多的ifs,查找表將工作。
您是否在尋找performSelector:withObject
?恐怕我不太理解你的問題。
Nikita是正確的,當你設置選擇器時,你只是在描述符名稱中傳遞。在你的代碼後面,當你調用方法時,你將傳入任何參數。
當。那麼,好吧。我想知道,因爲我認爲使一種方法更容易,然後通過我想要切換的場景,而不是每個場景製作一種方法。謝謝 – epicasian 2011-02-12 23:35:49