0

我有 10 个泛识别器并想分配给类属性。如何在 for() 循环中增加属性名称的数字部分?

for (int i=0; i < [_myArray count]; i++)
{
    myClassInstance.recognizer = pangesture + i ?? // doesn't work of course. but how??
}
4

2 回答 2

1

我有 10 个泛识别器并想分配给类属性。如何在 for() 循环中增加属性名称的数字部分?

我不确定我是否完全理解你的问题,但假设你有 10 个手势识别器g1通过g10你想使用循环分配给 10 个对象来命名,一个好的方法是将这 10 个手势识别器放入一个数组中并然后使用当前索引进行分配:

NSArray *recognizers = @[g1, g2, g3, g4, g5, g6, g7, g8, g9, g10];
if ([recognizers count < [_myArray count]) {
    NSLog("Houston, we have a problem! Not enough gesture recognizers to go around.");
}
for (int i=0; i < [_myArray count]; i++)
{
    myClassInstance.recognizer = recognizers[i]; // note the fancy "new" array access syntax!
}

如果您没有单独分配手势识别器,那么您可以每次通过循环创建一个:

for (MyClass *instance in _myArray) {
    instance.recognizer = [[UIGestureRecognizer alloc] init...];
}
于 2012-11-05T21:12:16.957 回答
1

这不是一种奇妙的形式——尽可能地遵循 Caleb 的评论——但如果你真的陷入困境:

for(int i = 0; i < [_myArray count]; i++)
{
    NSString *nameOfProperty = [NSString stringWithFormat:@"pangesture%d", i];
    UIPanGestureRecognizer *recogniser = [self valueForKey:nameOfProperty];
}

那是使用键值编码IBOutlets 必须符合 KVC,否则将无法加载 NIB。

于 2012-11-05T21:47:57.677 回答