2012-12-05 39 views
1

我有幾個從NSMutableArray創建的UIButtons。我試圖用一個獨特的圖像來定製每個UIButton。如何使用獨特的圖像和選擇器爲數組中的每個選擇一個自定義UIButton?

在下一行我不知道的語法使用設置圖像從圖像陣列分別每個按鈕:

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

這裏是我的代碼的其餘部分:

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]; 

} 

我還想爲每個按鈕調用不同的選擇器。

+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被觸摸等的。 – hanumanDev

+1

如果你有10個按鈕,你正在創建10個圖像,同樣你必須爲每個按鈕創建10個不同的方法(如果它們有點相似,那麼你可以去其他的事情)。在選擇器數組中,所有選擇器(提供了方法名稱),在運行時,@selector()將用參數say sel1調用。導致sel1()方法將被調用。 –

相關問題