iPhoneCheckboxesàlaMail

时间:2010-06-23 11:19:19

标签: iphone cocoa user-interface interface-builder checkbox

在阅读了iPhone人机界面指南后,我注意到很少提及可能在桌面或网络上遇到它们的样式的复选框。

复选框通常由iPhone上的UISwitch处理,但对于我目前正在处理的应用程序,它们确实不是正确的控件。相反,您在Mail中看到的控件更适合:

Checkboxes in Mail http://i45.tinypic.com/jj4l1k.png

实际邮件已消失。明显。

我如何在我的应用中使用这些复选框控件?它们是标准的,还是我需要使用自定义控件来模仿它们?

干杯啦。

6 个答案:

答案 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的应用程序。