2012-08-07 56 views
0

我想創建一個iPhone應用程序,爲NSArray中的每個項目創建一個UIButton。所以基本上,如果數組中有20個項目,則會創建20個UIButtons,每個UIButton都有一個標識符,以某種方式將它連接到數組中的相應項目。如果我要向數組添加另一個項目,則會創建21個按鈕而不是20個。有沒有一種方法可以使用Storyboard和Interface Builder來完成此操作?從NSArray與分頁創建多個UIButtons

另外,有沒有辦法來分頁創建的UIButtons?我想在屏幕上有六個按鈕,可以選擇滾動到下一個6.因此,如果數組中有20個項目,它將創建一個ScrollView,前3個頁面中有6個,最後一個是2個。

提前致謝!我試圖避免使用一個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

非常感謝你! – 2012-08-09 00:28:13