ios TableView List中的三态UIButton
Posted
技术标签:
【中文标题】ios TableView List中的三态UIButton【英文标题】:Three state UIButton in ios TableView List 【发布时间】:2016-02-22 14:17:02 【问题描述】:我在UITableView
有学生出勤名单。每个单元格都有一个UIButton
来设置学生出勤率,例如Present
、Absent
和Leave
按钮点击。如何在单个按钮上实现这一点。
【问题讨论】:
为什么不使用三个独立的按钮? 【参考方案1】:您可以通过在UITableViewCell
中为您的UIButton
简单地实现以下@selector
来做到这一点。
- (void)btnSetMode:(id)sender
UIButton *btn = (UIButton *)sender;
if (btn.tag == 0)
[btn setTitle:@"Present" forState:UIControlStateNormal];
btn.tag = 1;
// Define your required task...
else if (btn.tag == 1)
[btn setTitle:@"Absent" forState:UIControlStateNormal];
btn.tag = 2;
// Define your required task...
else if (btn.tag == 2)
[btn setTitle:@"Leave" forState:UIControlStateNormal];
btn.tag = 3;
// Define your required task...
else if (btn.tag == 3)
[btn setTitle:@"Attendance" forState:UIControlStateNormal];
btn.tag = 0;
// Define your required task...
您的单个按钮将按照您的意愿完成所有必需的任务。
【讨论】:
【参考方案2】:如果您的tableViewCell
中有一个UIButton
,那么add Target
到您的UIButton
和set button Tag with indexPath.row
中的set button Tag with indexPath.row
就像-
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
attendanceListTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];
cell.studentNameLbl.text=[NSString stringWithFormat:@"Student %ld",(long)indexPath.row];
cell.editBtn.tag=indexPath.row;
[cell.editBtn setTitle:[attandanceArry objectAtIndex:indexPath.row] forState:UIControlStateNormal];
[cell.editBtn addTarget:self action:@selector(editAttendance:) forControlEvents:UIControlEventTouchUpInside];
return cell;
-(void)editAttendance:(id)sender
UIButton *btn=(UIButton*)sender;
if ([btn.titleLabel.text isEqualToString:@"P"])
[btn setTitle:@"A" forState:UIControlStateNormal];
[attandanceArry replaceObjectAtIndex:btn.tag withObject:@"A"];
else if ([btn.titleLabel.text isEqualToString:@"A"])
[btn setTitle:@"L" forState:UIControlStateNormal];
[attandanceArry replaceObjectAtIndex:btn.tag withObject:@"L"];
else if ([btn.titleLabel.text isEqualToString:@"L"])
[btn setTitle:@"P" forState:UIControlStateNormal];
[attandanceArry replaceObjectAtIndex:btn.tag withObject:@"P"];
在这个attandanceArry
是mutableArray
具有所有默认值是"P"
与capacity
的number of students
和editBtn
是您的单元格UIButton
。在这里,我使用custom tableViewCell class
,即attendanceListTableViewCell
类具有UIButton
。最后,当您完成编辑考勤时,您可以使用attandanceArry
作为结果数组。我希望这会对你有所帮助......:)
【讨论】:
很高兴为您提供帮助 :) 。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。【参考方案3】:单击时更改按钮标题和背景颜色。就个人而言,我会使用三个不同的按钮,以便同时看到所有不同的选项。 UIPicker
也是一种选择。
【讨论】:
你是对的,但根据我的用户界面,我必须在每个单元格上使用单个按钮 你的用户界面是什么意思?您不能更改单元格内容以容纳三个按钮吗?如果你改变标题和颜色,你只需要一个按钮。【参考方案4】:UISegmentedControl
是您要找的吗?
请参阅 Apple 文档here。它可以在情节提要中配置正确数量的段和段标题。当用户选择一个段时,它将被突出显示,而任何其他段都被取消选择。
【讨论】:
我想使用具有三个状态的单个按钮而不是分段控件。如果我第一次按下按钮显示存在,第二次按下显示不存在,第三次按下按钮显示离开以上是关于ios TableView List中的三态UIButton的主要内容,如果未能解决你的问题,请参考以下文章