2012-08-07 4 views
0

NSArray의 모든 항목에 대해 UIButton을 만드는 iPhone 응용 프로그램을 만들려고합니다. 따라서 기본적으로 배열에 20 개의 항목이 있으면 20 개의 UIButton이 만들어지고 각 배열에는 식별자가 배열의 각 항목에 연결됩니다. 배열에 다른 항목을 추가하려면 20 대신 21 개의 버튼이 만들어집니다. 스토리 보드 및 인터페이스 빌더를 사용하여이 작업을 수행 할 수있는 방법이 있습니까?NSArray에서 다중 UIButton을 페이지 매기기로 생성

또한, 생성 된 UIButtons를 매김하는 방법이 있습니까? 화면에 6 개의 버튼이 있고 다음 6으로 스크롤하는 옵션이 있습니다. 배열에 20 개의 항목이 있으면 첫 번째 3 페이지에는 6, 마지막 페이지에는 2가있는 ScrollView가 생성됩니다.

미리 감사드립니다. 난 시각적 인 이유로이 TableView를 사용하지 않도록 노력하고있어. 이 작업을 쉽게 수행 할 수있는 방법이 있으면 알려 주시기 바랍니다.

답변

1

제 의견으로는 InterfaceBuilder를 사용하면 쉽지 않을 것입니다. 코드를 사용하여 작성하는 것이 좋습니다. 페이지 매김의 경우 페이징 UIScrollView를 사용해야합니다.

#define BUTTON_WIDTH 40 
#define BUTTON_HEIGHT 30 
#define BUTTON_PADDING 10 
#define BUTTONS_PER_PAGE 6 
#define PAGE_WIDTH ((BUTTON_WIDTH + BUTTON_PADDING) * BUTTONS_PER_PAGE) 
#define MAGIC_BUTTON_TAG_OFFSET 6238 /* Maybe somebody already uses views with tags like 0, 1, 2, 3...) 

// in an init... method: 

UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 80, 320, 320)]; 
sv.contentSize = CGSizeMake(PAGE_WIDTH, sv.frame.size.height); 
sv.pagingEnabled = YES; 
[self.view addSubview:sv]; // assuming a view controller 

NSArray *a = [NSArray arrayWithObjects:...]; // whatever 

for (int i = 0; i < a.count; i++) 
{ 
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    btn.frame = CGRectMake(i * (BUTTON_WIDTH + BUTTON_PADDING), 0, BUTTON_WIDTH, BUTTON_HEIGHT); 
    btn.tag = i + MAGIC_BUTTON_TAG_OFFSET; // to relate to the array index 
    [btn setTitle:[NSString stringWithFormat:@"Button No. %d", i] forState:UIControlStateNormal]; 
    [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [sv addSubview:btn]; 
} 

- (void)buttonPressed:(UIButton *)btn 
{ 
    int index = btn.tag - MAGIC_BUTTON_TAG_OFFSET; 
    id object = [a objectAtIndex:index]; 

    [self doSomethingWithObject:object]; 
} 

희망이 있습니다.

+0

정말 고마워요! –

관련 문제