我有10个泛识别器并且想要分配给类属性。 如何在for()循环中增加属性名的数字部分?
for (int i=0; i < [_myArray count]; i++)
{
myClassInstance.recognizer = pangesture + i ?? // doesn't work of course. but how??
}
答案 0 :(得分: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...];
}
答案 1 :(得分:1)
这不是很棒的形式 - 绝对会在可能的情况下遵循Caleb的评论 - 但如果你真的回到了角落里:
for(int i = 0; i < [_myArray count]; i++)
{
NSString *nameOfProperty = [NSString stringWithFormat:@"pangesture%d", i];
UIPanGestureRecognizer *recogniser = [self valueForKey:nameOfProperty];
}
那是在使用key-value coding; IBOutlet
必须符合KVC标准,否则无法加载NIB。