2012-12-05 1 views
1

NSMutableArray에서 여러 개의 UIButton을 만들었습니다. 고유 한 이미지로 각 UIButton을 사용자 지정하려고합니다. 내가 구문이 각각 이미지 배열에서 각 버튼에 대한 이미지를 설정하는 데 사용의 확실하지 않다 다음 줄에 배열에서 각각에 대해 고유 한 이미지와 선택기로 사용자 정의 UIButton을 만드는 방법은 무엇입니까?

:

NSMutableArray* buttonArray = [[NSMutableArray alloc] init]; 

for(int i = 0; i < 8; i++) 
{ 
    // Custom UIButton 
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [btn setFrame:CGRectMake(0.0f, 2.0f, 52.0f, 52.0f)]; 
    [btn setTitle:[NSString stringWithFormat:@"Button %d", i+1] forState:UIControlStateNormal]; 

    NSArray * myImages = [NSArray arrayWithObjects:@"category0.png", @"category-clothing1.png" , @"category2.png", @"category3.png", nil]; 

    [btn setImage:[UIImage imageNamed:[myImages objectAtIndex:3]] forState:UIControlStateNormal]; 

    [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [buttonArray addObject:btn]; 

} 
: 여기

[btn setImage:[UIImage imageNamed:[myImages objectAtIndex:3]] forState:UIControlStateNormal]; 

내 코드의 나머지 부분입니다

각 단추마다 다른 선택기를 호출 할 수도 있습니다.

+0

당신이 모든 버튼에 같은 ​​동작을 설정 하시겠습니까 (이 코드는되지 컴파일 검사, 불편을 드려 죄송 몇 가지 작은 문제를 포함 할 수 있습니다)? 당신도 그것을 바꿀 수 있습니다. 나는 당신이 어떻게해야하는지 알고 있어야합니다. –

+0

건물의 대상에 이미지가 추가 되었습니까? 오른쪽 막대에 회원 ​​지정을위한 체크 박스가 있습니다. 그것은 장치가 아닌 시뮬레이터에서 작동합니까? 그렇다면 대문자를 확인하십시오. 때로는 시뮬레이터가 덜 까다 롭습니다. – Josh

+0

@AnoopVaidya 또한 각각의 버튼에 대해 고유 한 조치가 필요합니다. :) – hanumanDev

답변

2

이와 비슷한? 방금 각 버튼마다 다른 액션이 필요하다는 게시물을 보았습니다. 대신 버튼 발신자를 확인하고 그에 따라 버튼을 조정할 수 있습니다 (buttonPressed :). 또한 단추 배열에 적합한 이미지가 있는지 확인하여 이미지 배열 수에 따라 단추 양을 만드는 것이 더 나은 방법 일 수 있습니다. (이것을 반영하여 답변 됨). 또한 일반 상태를 변경할 때 이미지의 강조 표시 상태를 변경하는 습관을가 져야하므로 이미지를 누르면 공백으로 표시되지 않도록해야한다고 덧붙였습니다.

NSMutableArray* buttonArray = [NSMutableArray array]; 
NSArray * myImages = [NSArray arrayWithObjects:@"category0.png", @"category-clothing1.png" , @"category2.png", @"category3.png", nil]; 

for(int i = 0;i < [myImages count]; i++) 
{ 
    // Custom UIButton 
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [btn setFrame:CGRectMake(0.0f, 2.0f, 52.0f, 52.0f)]; 
    [btn setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal]; 
    [btn setImage:[UIImage imageNamed:[myImages objectAtIndex:i]] forState:UIControlStateHighlighted]; 
    [btn setImage:[UIImage imageNamed:[myImages objectAtIndex:i]] forState:UIControlStateNormal]; 
    [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [buttonArray addObject:btn]; 
} 
+0

완벽한! 도와 주셔서 감사합니다 – hanumanDev

+0

언제든지! 기꺼이 도와 드리겠습니다 .-) –

2

이 코드에는 배열의 이미지 및 선택기가 포함되어 있습니다.

NSMutableArray* buttonArray = [NSMutableArray array]; 
NSArray * myImages = [NSArray arrayWithObjects:@"category0.png", @"category-clothing1.png" , @"category2.png", @"category3.png", nil]; 


// You need to assign string name and that should be your method name. 
NSMutableArray *selectors=[[NSMutableArray alloc]initWithArray:@"sel1",@"sel2",@"sel3",@"sel4", nil]; 


for(int i=0; i<[myImages count]; i++){ 
    // Custom UIButton 
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [btn setFrame:CGRectMake(0.0f, 2.0f, 52.0f, 52.0f)]; 
    [btn setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal]; 
    [btn setImage:[UIImage imageNamed:[myImages objectAtIndex:i]] forState:UIControlStateHighlighted]; 
    [btn setImage:[UIImage imageNamed:[myImages objectAtIndex:i]] forState:UIControlStateNormal]; 

    SEL selector = selectorFromString([selectors objectAtIndex:i]); 
    [btn addTarget:self action:@selector(selector) forControlEvents:UIControlEventTouchUpInside]; 

    [buttonArray addObject:btn]; 
} 
+0

감사합니다! 어떻게 그 방법이 호출되는 것 같습니까? 버튼 3이 있다면 버튼 3을 건 드리는 방법에 대해 잘 모르겠다. – hanumanDev

+1

10 개의 버튼이 있고 10 개의 이미지를 만들고 비슷하게 각 버튼마다 10 개의 다른 메소드를 만들어야한다. 다른 일을 할 수있다). selectors 배열에서 모든 선택기 (메서드 이름이 제공됨)는 런타임시 @selector()가 매개 변수 say sel1과 함께 호출됩니다. 결과 sel1() 메서드가 호출됩니다. –

관련 문제