【问题标题】:How to create a simple checkbox in iOS? [duplicate]如何在 iOS 中创建一个简单的复选框? [复制]
【发布时间】:2011-07-19 02:23:27
【问题描述】:

可能重复:
Checkbox in IPhone application

我想创建一个带有 2 个值的简单复选框并保存它,我该怎么做?

谢谢。

【问题讨论】:

  • 发帖前请先搜索
  • 警告:切换小部件的原生组件是 UISwitch。接受的答案实现了一个带有 UIButton 的 windows 样式复选框。
  • 您可以简单地从 SF 符号中为正常和选定状态设置适当的图像。详细解答请参考stackoverflow.com/a/69392377/1311902

标签: ios iphone checkbox


【解决方案1】:

在 iOS 上,有切换 UI 组件而不是复选框,请查看 UISwitch 类。 属性on(布尔值)可用于确定滑块的状态以及保存其状态:这取决于您如何保存其他内容,它只是保存一个布尔值。

【讨论】:

  • 我也更喜欢 UISwitch,因为它是原生的、优化的并且易于定制。第一个答案也很好,但对我来说(这只是个人偏好),如果不需要,不需要重新发明轮子。
  • 如果我们想让用户选择多个选项,开关是没有用的。
  • @Hiren Prajapati:为什么?如果您需要获得多个布尔选择,您将使用多个 UISwitch 元素,就像在主 Preference 应用程序中所做的那样。使用 UISwitch 而不是复选标记的唯一罪魁祸首只是美学上/代表性的情况,当 UI 应该传达“完成/未完成”状态时。
  • 不幸的是,当您确实有一个项目列表并且希望用户选择其中一些时,开关在美学上就不太令人愉悦了
  • 在 iOS 14.0 中,现在有一个“UISwitchStyle”属性,UISwitch 具有“UISwitchStyleCheckbox”外观,显示传统复选框。
【解决方案2】:

是的,iOS 中没有适合您的复选框(-:

这里,这是我创建复选框的操作:

UIButton *checkbox;
BOOL checkBoxSelected;
checkbox = [[UIButton alloc] initWithFrame:CGRectMake(x,y,20,20)];
// 20x20 is the size of the checkbox that you want
// create 2 images sizes 20x20 , one empty square and
// another of the same square with the checkmark in it
// Create 2 UIImages with these new images, then:

[checkbox setBackgroundImage:[UIImage imageNamed:@"notselectedcheckbox.png"]
                    forState:UIControlStateNormal];
[checkbox setBackgroundImage:[UIImage imageNamed:@"selectedcheckbox.png"]
                    forState:UIControlStateSelected];
[checkbox setBackgroundImage:[UIImage imageNamed:@"selectedcheckbox.png"]
                    forState:UIControlStateHighlighted];
checkbox.adjustsImageWhenHighlighted=YES;
[checkbox addTarget:(nullable id) action:(nonnull SEL) forControlEvents:(UIControlEvents)];
[self.view addSubview:checkbox];

现在在目标方法中执行以下操作:

-(void)checkboxSelected:(id)sender
{
    checkBoxSelected = !checkBoxSelected; /* Toggle */
    [checkbox setSelected:checkBoxSelected];
}

就是这样!

【讨论】:

  • 只是一个非常非常非常小的评论。不要忘记字符串前的@:@"notselectedcheckbox.png"。
  • 如果你有多个按钮,你可以在你的taget方法上使用它UIButton *btn = (UIButton *) sender; if([btn isSelected]){ [btn setSelected:NO]; }else{ [btn setSelected:YES]; }
  • 不需要定义突出显示状态的两行!他们只是打错了复选框(至少在 iOS5 中)。 :)
  • 如果你使用这种方法,你可以不用图形:stackoverflow.com/a/2615036/1431728.
  • 我觉得用setImage比setBackgroundImage好,因为如果我们增加按钮的大小来增加选择区域,图像不会被拉伸
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
相关资源
最近更新 更多