2012-11-05 47 views

回答

1

這不是虛幻形式 - 絕對服從迦勒的意見儘可能 - 但如果你真的被逼到牆角:

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。

+0

是的,這是我一直在尋找!謝謝! – alexhajdu

1

我已經10個識別器和要指派給類屬性。 我如何增加for()循環中的屬性名稱的數字部分?

我不知道我完全理解你的問題,但假設你有你想要使用循環分配給10個對象通過g10命名g1 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...]; 
} 
+0

是的,但是您手動填充識別器數組。我不想要這個。我需要把數字屬性名稱爲()循環 – alexhajdu

+0

如何讓g1,g2,g3在循環中? – alexhajdu

+0

@alexhajdu你不能像for循環索引那樣使用變量作爲標識符的一部分,你不需要。我使用了上面的數組,因爲從你的問題來看,它聽起來像你已經單獨創建了手勢識別器。如果沒有,爲什麼不每次通過循環分配一個新的手勢識別器? – Caleb