在阅读了iPhone人机界面指南后,我注意到很少提及可能在桌面或网络上遇到它们的样式的复选框。
复选框通常由iPhone上的UISwitch
处理,但对于我目前正在处理的应用程序,它们确实不是正确的控件。相反,您在Mail中看到的控件更适合:
Checkboxes in Mail http://i45.tinypic.com/jj4l1k.png
实际邮件已消失。明显。
我如何在我的应用中使用这些复选框控件?它们是标准的,还是我需要使用自定义控件来模仿它们?
干杯啦。
答案 0 :(得分:3)
您需要创建自定义控件。由于UIControl
已经拥有了“已选中”,“突出显示”和“状态”属性,因此并不困难。你只需要适当地绘制和切换。
答案 1 :(得分:2)
不要继承UIControl。你想要的是一个“自定义”类型的UIButton。在IB中加载“unlit”图像(或以编程方式加载-viewDidLoad
- 您也可以将其设置为适合其数据,如果您来到这里已经“检查过”该属性)。
将其touchUpInside事件指向名为-(void)toggleCheckBox
的方法,并在该方法中,切换您要切换的任何设置(可能是您列出的对象的BOOL属性),并切换“点亮/不点亮” “使用-setImage: forState:
方法显示按钮图像的状态。使用控件状态UIControlStateNormal
。
我做了类似的事情,我让人们按下一个按钮来切换他们正在看的东西(“thisEvent” - 一系列当地文化/艺术活动的成员)的“最喜欢”状态:
- (IBAction)toggleFavorite {
if (self.thisEvent.isFavorite == YES) {
self.thisEvent.isFavorite = NO;
[self.favoriteButton setImage:[UIImage imageNamed:@"notFavorite.png"] forState:UIControlStateNormal];
}
else {
self.thisEvent.isFavorite = YES;
[self.favoriteButton setImage:[UIImage imageNamed:@"isFavorite.png"] forState:UIControlStateNormal];
}
}
答案 2 :(得分:1)
我很确定没有标准的方法可以做到这一点。然而,它实现起来相当简单,您只需要两个图像,每个状态一个。我可能会做一些简单的事情,比如子类UIImageView并添加一个setState:(BOOL)theState
方法,然后只需选择相关的图像。
答案 3 :(得分:1)
我宁愿将UITableViewCell继承为UIImageView。 UITableViewCell已经为编辑模式等提供了选定/未选择的状态和处理程序。
答案 4 :(得分:1)
如前所述,您需要继承UIControl
。很久以前就讨论了here的实际过程。
答案 5 :(得分:0)
我还使用与Mail应用程序使用相同的图像/方法找到了另一种方法的描述:
http://networkpx.blogspot.com/2009/07/multiple-row-selection-with-uitableview.html
但由于这会实现iOS SDK的未记录功能,因此可能不适合用于官方App Store的应用程序。