我正在创建带有其动作功能的条形按钮列表(如下所示的sFuncName),它是动态更改的。

当用户单击按钮时,将调用sFuncName

for(int i = 0; i < 3 ; i++){

        NSString* sFuncName = [NSString stringWithFormat:@"OnFunc_%d:", i ];
        barButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:systemItem target:self
                     action:NSSelectorFromString(sFuncName)];
}


问题是:我有什么办法动态声明sFuncName来响应按钮吗?

例:

for(int i = 0; i < 3 ; i++){

        NSString* sFuncName = [NSString stringWithFormat:@"OnFunc_%d:", i ];
        - (void)sFuncName: (id)sender; //sFuncName: OnFunc_0, OnFunc_1, OnFunc_2
}

最佳答案

我看不到动态创建方法声明的优势,因为这些方法中的代码也不是动态的。

因此,您应该声明一个将由每个按钮调用的方法,向其传递标签或对发件人(按钮)的引用,或者通过其他一些值使您的方法能够知道在该方法之前已点击了哪个按钮被呼叫。您可以执行以下操作:

-(void)buttonPressed: (int)tag {

   if (tag == 0) {
      // Code for first button
   }

   if (tag == 1) {
      // Code for second button
   }

   // prepare code for further buttons...

}

关于iphone - 动态声明函数名称?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3768358/

10-14 22:32