2011-01-22 2 views
1

Так что я хочу, чтобы я повесил трубку, я создаю массив, передаю ему кнопки и использую цикл for, чтобы поместить каждую кнопку в представление. Я знаю, что они будут в том же положении, потому что они оба проходят через тот же CGRectMake. Однако я не могу ничего разместить на экране с помощью этого кода, хотя он не возвращает никаких ошибок, но по-прежнему меня беспокоит, почему.Basic Objective-C array 'for' loop help

У кого-нибудь есть предложения? Благодаря!

- (void)practiceMethod{ 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Practice Method has begun" message:@"Alert" delegate: self cancelButtonTitle:@"Close" otherButtonTitles: nil]; 
//[alert show]; 
[alert release]; 

float i=0; 

CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame]; 

UIImage *buttonGraphic = [UIImage imageNamed:@"1.png"]; 

UIButton *buttonOne = [[UIButton alloc] initWithFrame:applicationFrame]; 
UIButton *buttonTwo = [[UIButton alloc] initWithFrame:applicationFrame]; 

buttonArray = [[NSArray alloc] initWithObjects:buttonOne, buttonTwo,nil]; 

for (i = 0; i > [buttonArray count]; i++) { 

    UIButton *tempElement = [buttonArray objectAtIndex:i]; 

    tempElement.frame = CGRectMake(140, 230, 50, 50); 

    [tempElement setBackgroundImage:buttonGraphic forState:UIControlStateNormal]; 

    [self addSubview:tempElement]; 
} 
} 

ответ

8

Изменить

for (i = 0; i > [buttonArray count]; i++) {

в

for (i = 0; i < [buttonArray count]; i++) {

и вы будете и работает.

PS. Я предлагаю вам использовать Objective-Cs for each итератор для проблемы такого рода:

for(UIButton* button in buttonArray) 
{ 
    // stuff with button 
} 
+0

Первый: им идиот. Два: Большое спасибо :) –

+1

Эти вещи случаются. Моя самая распространенная ошибка 'for' заключается в том, чтобы идти' for (unsigned int i = arrayLength-1; i> 0; -i); ' : D –

3

Заменить:

for (i = 0; i > [buttonArray count]; i++) { 
    UIButton *tempElement = [buttonArray objectAtIndex:i]; 
    ... 

} 

С массива обхвата синтаксис ярлыка:

for (UIButton *tempElement in buttonArray) { 
    ... 

} 

Это также лучше использовать buttonWithType: с UIButton:

UIButton *buttonOne = [UIButton buttonWithType: UIButtonTypeCustom]; 
buttonOne.frame = applicationFrame; 
+0

Я согласен с graham - используйте' UIButton buttonWithType: ' –

+0

Fast Enumeration is ваш читающий друг! –

+0

Спасибо за советы :) –