2015-09-21 5 views
0

это код, я использую, selectindex является BOOLКак изменить цвет кнопки чередующийся выбор кнопки?

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

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

     selectindex=NO; 
    } 

Моя проблема, когда пользователь выбирает моя кнопка его меняющийся цвет правильно, когда пользователь попытке выбрать другую кнопку его продолжить предыдущее значение BOOL.

-> Мое требование, когда пользователь нажимает кнопку, цвет должен меняться.

-> Когда пользователь выбирает ту же кнопку, цвет должен меняться.

-> кнопка помещается внутри Tableview каждой кнопки есть тег, я пытался изменить, используя значение тега, но failed.Any один пожалуйста, помогите мне ....

Третья сторона Tableview Заголовок раздела:

- (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

выберите индекс с начальным>нет.

, когда пользователь выбирает цвет кнопки.

сейчас, что selectIndex значение есть; , когда пользователь пытается выбрать другую кнопку, значения selectIndex продолжаются с истинным. Так, когда пользователь нажимает кнопку во второй раз, ее цвет был изменен. Обращаем ваше внимание. Выбор кнопки должен быть несколько:

+0

, в каком методе вы написали этот код? 'DidselectrowAtIndexpath'? – Jamil

+0

@ jamil65able У меня есть обновленный mycode в соответствии с вашим требованием .... –

+0

Маленький вопрос, если вы устанавливаете образ buttom? в чем смысл настройки цвета фона? –

ответ

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 & перезарядка стол

В методе cellforRow из Tableview записи ниже кода

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

выбор должен быть нажатием кнопки ... –

+0

Вы можете обработать событие действия кнопки и изменить изображение bgcolor или кнопку bg в методе cellforrow по вашему желанию. это работа для вас? –

+0

нет, это не мое требование брата, мой выбор приложения должен быть кратным, и если тот же цвет с нажатой кнопкой должен измениться как предыдущий цвет. –

2

Вы должны сохранить состояние для каждой ячейки в словаре или в вашем классе

-(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

Вы можете сделать это с легкостью следуя этому методу. Каждая кнопка имеет свойство «выбрано». Вы можете использовать это вместо создания переменной BOOL для каждой из ваших отдельных кнопок. Предполагая, что ваше имя кнопочной панели «нажмите», просто проверить состояние кнопки и установить цвет на

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

Поскольку выбрано свойство и его значение BOOL обрабатываются его встроенными функциями, вы не должны установить его к YES или NO.

EDIT:

Нашел более простой способ. Добавьте изображения выбранных и невыделенных кнопок в проект как ресурсы и установите это.

`[кнопка setBackgroundImage: [UIImage imageNamed: @" selected.png "] forState: UIControlStateSelected];

[кнопка setBackgroundImage: [UIImage imageNamed: @ "unselected.png"] forState: UIControlStateNormal]; `

+0

его не работает ....... –

+0

где вы используете эту проверку? – Skywalker

+0

внутри @selector method ... –

Смежные вопросы