2015-09-21 210 views
0

這是我使用的代碼,selectindex是BOOL如何更改按鈕顏色替代選擇按鈕?

if(!selectindex) 
    { 
     click.backgroundColor=[UIColor colorFromHexString:@"#ffc400"]; 

     selectindex=YES; 
    } 
    else 
    { 
     click.backgroundColor=[UIColor grayColor]; 

     selectindex=NO; 
    } 

我的問題是,當用戶選擇我的按鈕它改變顏色正常,當用戶試圖選擇另一個按鈕其繼續與以前的bool值。

- >我的要求是當用戶點擊按鈕顏色必須改變。

- >第二次,當用戶選擇相同的按鈕顏色必須改變。

- >按鈕放在裏面的tableview每個按鈕都標記,我嘗試使用標籤值,但failed.Any一個請幫我改....

第三方泰伯維頁眉部分:

- (UIView *)mTableView:(TQMultistageTableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 

    UIView *viewHeader=[[UIView alloc]initWithFrame:CGRectMake(0, 0, tableView.frame.size.width,tableView.frame.size.height)]; 

    UIButton *btnClick; 
lblHead=[[UILabel alloc]initWithFrame:CGRectMake(50,3,150, 50)]; 
     btnClick=[[UIButton alloc]initWithFrame:CGRectMake(0,10,30, 30)]; 

    [btnClick addTarget:self action:@selector(touchup:) forControlEvents:UIControlEventTouchUpInside]; 
    btnClick.clipsToBounds = YES; 
    btnClick.layer.masksToBounds=YES; 
    btnClick.layer.cornerRadius=btnClick.frame.size.height/2; 
    [btnClick setImage:[UIImage imageNamed:@"right.png"] forState:UIControlStateNormal]; 
    btnClick.backgroundColor=[UIColor grayColor]; 
    btnClick.tag=section; 
    [viewHeader addSubview:btnClick]; 
    return viewHeader; 
} 

這是我期待... enter image description here

選擇指數initially->沒有

當用戶選擇按鈕顏色改變。

現在selectIndex值是; 當用戶嘗試選擇另一個按鈕時,selectIndex值繼續爲真。因此,當用戶第二次單擊該按鈕時,其顏色已更改。 請注意按鈕的選擇應該是多個:

+0

你在哪種方法中編寫了這段代碼? 'didSelectRowAtIndexPath方法'? – Jamil

+0

@ jamil65able我已根據您的要求更新mycode ...... –

+0

小問題,如果您設置了按鈕圖像?設置背景顏色有什麼意義? –

回答

0

終於讓我找到答案感謝您的回覆朋友....

-(void)touchup:(UIButton*)click 
{ 

    if(click.selected==NO) 
    { 
     click.backgroundColor=[UIColor colorFromHexString:@"#ffc400"]; 
     click.selected=YES; 
    } 
    else 
    { 
     click.backgroundColor=[UIColor grayColor]; 
     click.selected=NO; 
    } 

} 

所選擇的默認狀態是NO。

@property(nonatomic,getter=isSelected) BOOL selected;        // default is NO may be used by some subclasses or by application 
0

請詳細描述,我給出答案,根據我的理解。

先取一個NSMutableArray *arr_index;

在點擊按鈕店目前IndexPath到arr_index &重裝表

在下面的代碼

if([arr_index containsObject:indexPath]) 
{ 
// change your button bgColor 
} 
else 
{ 
// Default Color for button 
} 
+0

選擇應該是按鈕點擊兄弟... –

+0

您可以按照您的意願處理cellforrow方法中的按鈕操作事件並更改bgcolor或按鈕bg圖像。這是你的兄弟工作..? –

+0

沒有這不是我的要求兄弟,我的應用程序選擇應該是多個,如果相同的按鈕點擊的顏色必須改變爲以前的顏色.. –

2

的tableview寫的cellforRow方法,您應保存狀態爲每個小區在字典或在你的班級

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 

     return [yourArray count]; 
} 

而在

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 


    NSMutableDictionary *dictionary = [yourArray objectAtIndex:indexPath.row]; 

if(dictionary[@「selectindex」] ==NO) 
{ 

     click.backgroundColor=[UIColor colorFromHexString:@"#ffc400"]; 
     NSLog(@"kishore kumar」); 
     [dictionary setValue:YES forKey:@「 selectindex」]; 

    }else{ 

     click.backgroundColor=[UIColor grayColor]; 
     [dictionary setValue:NO forKey:@「selectindex」]; 

    } 
+0

該選擇應該是按鈕不是單元格... –

0

// chekMarkArray最初含有0.//[chekMarkArray ADDOBJECT:@(0)];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
//……… 
    BOOL selectindex = [[chekMarkArray objectAtIndex:indexPath.row] boolValue]; 
    if (!selectindex) { 
     testButton.backgroundColor = [UIColor greenColor];//[UIColor colorFromHexString:@"#ffc400"]; 
    }else{ 
     testButton.backgroundColor = [UIColor redColor]; 
    } 

    //……….. 
return cell; 

}

-(IBAction)buttonPressed:(id)sender{ 
UIButton *button = (UIButton*)sender; 
BOOL currentStatus = [[chekMarkArray objectAtIndex:button.tag] boolValue]; 
//deselect all selection 
for (int i=0;i<chekMarkArray.count;i++) { 
    [chekMarkArray replaceObjectAtIndex:i withObject:@(0)]; 
} 
//select current button 
[chekMarkArray replaceObjectAtIndex:button.tag withObject:@(!currentStatus)]; 
[self.tableView reloadData]; 

}

+0

如果其重新載入那麼其他按鈕選擇顏色應該改變...... –

+0

它是多重選擇... –

+0

您是否只需要一次選擇一個按鈕? – Jamil

0

你可以做到這一點很容易跟隨此方法。 每個按鈕都有一個名爲'selected'的屬性。您可以使用它而不是爲每個按鈕創建一個BOOL變量。 假設你的按鈕名稱爲「點擊」,簡單地通過

if(click.selected){ 
    click.backgroundColor=[UIColor colorFromHexString:@"#ffc400"]; 
} 
else{ 
    click.backgroundColor=[UIColor grayColor]; 
} 

檢查按鈕的狀態,並設置顏色,因爲選擇的是一個屬性,它的BOOL價值是由它的內置函數處理,你不必設置到是或否。

編輯:

找到一個更簡單的方法。 將選定和未選定按鈕的圖像作爲資源添加到項目中並進行設置。對於狀態:UIControlStateSelected];} [UIImageBaseNamed:@「selected.png」] forState:UIControlStateSelected]; [UIImage imageNamed:@「unselected.png」] forState:UIControlStateNormal];這是一個簡單的例子。 `

+0

其不工作....... –

+0

你在哪裏運行此檢查? – Skywalker

+0

裏面的@selector方法... –