点击任何一个uibutton-iphone取消选择其他按钮

Alo*_*lok 0 iphone

如何在单击一个按钮时取消选择另外两个按钮.我可以通过单击它来更改按钮的图像.我已经从IB创建了三个按钮.他们的ibaction如下:

- (IBAction)todaybuttonClicked:(id)sender
{
    todayButton.tag=0;

    NSLog(@"hi todaybuttonClicked");
    if ([sender isSelected]) {
        [todayButton setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];

        [sender setSelected:NO];
    }
    else{
        [sender setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateNormal];
        [sender setSelected:YES];
    }  
        [self todayOffersSegmentSelected];

}

- (IBAction)tomorrowbuttonClicked:(id)sender
{
    tomorrowButton.tag=1;

    NSLog(@"hi tomorrowbuttonClicked");

    if ([sender isSelected]) {

        [tomorrowButton setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];

        [sender setSelected:NO];
    }
    else{
        [sender setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];
        [sender setSelected:YES];

    }
    [self tomorrowOffersSegmentSelected];
}

- (IBAction)restoftheweekbuttonClicked:(id)sender
{
    restoftheweekButton.tag=2;

    NSLog(@"hi restoftheweekbuttonClicked");

    if ([sender isSelected])
    {
        [restoftheweekButton setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];

        [sender setSelected:NO];

    }

    else{

        [sender setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];

        [sender setSelected:YES];

    }
    [self restOfWeekOffersSegmentSelected];

}
Run Code Online (Sandbox Code Playgroud)

任何建议?谢谢

小智 5

在viewDidLoad中,您可以使用按钮初始化_days数组:

_daysArray =[[[NSArray alloc]initWithObjects:self.sunday,self.monday,self.tuesday,self.wednesday,self.thursday,self.friday,self.saturday nil]retain];
Run Code Online (Sandbox Code Playgroud)

如果您使用IB创建按钮,只需将它们全部指向您班级中的同一IBAction:

-(IBAction)changeSelectedDay:(id)sender
{
    for (UIButton *button in _buttonsArray) {
        [button setSelected:([button isEqual:sender])?YES:NO];
    }
}
Run Code Online (Sandbox Code Playgroud)

恕我直言,这种方法更清洁.