我有一个包含按钮的 TableView 。我想要做的是,我想将点击的按钮保持在选定状态,直到再次点击它们(这应该取消选择它们)。老实说,这就像一个复选框。很简单,对吧?
但问题是,由于使用单个 bool 标志来查看按钮是第一次还是第二次被按下,事情变得一团糟。例如我点击按钮一,然后我点击按钮二,现在我想取消选择按钮一所以我再次点击它但它没有取消选择因为标志设置为是(虽然它确实取消选择再次点击)。
有没有一种方法可以避免这种情况,并且只需单击一下就可以达到预期的效果? 屏幕截图:http://i60.tinypic.com/1z51653.png 这就是我正在做的:
-(void) btnStateChanged: (UIButton *) btnProblem
{
static BOOL btnPressedFirstTime=YES;
if(btnProblem.selected==YES || btnProblem.highlighted==YES)
{
if(btnPressedFirstTime==YES)
{
[btnProblem setBackgroundImage:[UIImage imageNamed:@"sc123_button_hover"] forState: UIControlStateNormal];
btnPressedFirstTime=NO;
}
else if(btnPressedFirstTime==NO)
{
[btnProblem setBackgroundImage:[UIImage imageNamed:@"sc123_button"] forState: UIControlStateNormal];
btnPressedFirstTime=YES;
}
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
最佳答案
用描述每个按钮状态的对象启动一个数组。假设您有 10 个按钮:
NSMutableArray *buttonStates = [NSMutableArray new];
for (int i = 0; i < 10; i++)
{
[buttonStates addObject:[NSNumber numberWithBool:NO]];
}
现在,当您单击 2 号按钮时(请注意,您必须使用其所在行的索引标记按钮):
- (void)btnStateChanged:(UIButton *)btnProblem
{
int buttonIndex = btnProblem.tag;
BOOL state = [[buttonStates objectAtIndex:buttonIndex] boolValue];
[buttonStates replaceObjectAtIndex:buttonIndex withObject:[NSNumber numberWithBool:!state]];
}
这样你总能知道每个按钮的状态。
关于ios - 当你有多个按钮时,如何在 UITableView 中保持 UIButton 状态被选中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25785803/