【问题标题】:iPhone toggle button implementationiPhone切换按钮实现
【发布时间】:2009-08-21 21:22:58
【问题描述】:

我想在我的 iPhone 应用程序中创建一个切换按钮。但是,我不确切知道什么是最好的方法。

我正在考虑两种选择。

我可以继承一个 UIButton。这样我就不必实现触摸处理。我可以创建一个方法,返回一个布尔值,指示按钮是处于打开还是关闭状态。

我也可以从 UIView 子类开始并从头开始创建它。我想做过渡动画之类的东西会更容易,但我必须创建自己的触摸处理。

你认为最好的是什么?或者你会知道更好的方法吗? (也许网络上有一个开源/免费的视图?)

编辑:我不想使用 UISwitch,因为我希望我的切换按钮看起来像那样。我希望它是一个大的矩形按钮,并改变背景以指示状态。

谢谢!

【问题讨论】:

    标签: iphone


    【解决方案1】:
    -(IBAction)toggle{
        if (button.selected == NO) {
            button.selected = YES;
    
        }
        else {
            button.selected = NO;
        }
    }
    

    -(IBAction)toggle:(UIButton*)sender
    {
    sender.selected = !sender.selected;
    }
    

    简单的家伙

    【讨论】:

    • 如果button.selected = !button.selected; 最简单的家伙怎么办! :D
    • 更好:- (IBAction)toggle:(UIButton*)sender { sender.selected = !sender.selected; }
    【解决方案2】:

    您可以使用UIButton 并设置其enabled 属性。

    在Interface Builder中,您可以为启用和禁用状态设置单独的图像,并IBAction更改属性。

    【讨论】:

    • 我想知道您为什么选择enabled 属性而不是selected?不久前阅读了这个技巧后,我今天使用selected 实现了它。效果很好。然后我重新阅读了提示并尝试了enabled。禁用后,您将无法再单击该按钮,因此它不是一个很好的切换方式。我错过了一些设置吗?
    • 你是对的,我在对不同答案的评论中建议。
    【解决方案3】:

    只需创建一个 (IBAction) 方法和一个 BOOL。将 BOOL 默认设置为 FALSE。 您的 IBAction 必须如下所示:

    - (IBAction) .... {
    
        if (bool) {
            // do your things
        }
    
        else {
            // do your things
        }
    
        bool =! bool
    }
    

    这对我有用!

    【讨论】:

      【解决方案4】:

      是不是已经有一个切换按钮,或者我在这里遗漏了什么?

      编辑:正如其他人所说,它被称为UISwitch,它可以打开和关闭。

      【讨论】:

      • UISwitch是一种实现toggling的方式
      • 谢谢。我不记得确切的名称,而且我没有在这个系统上安装 iPhone SDK。
      【解决方案5】:

      可能是我没有正确理解这个问题..你为什么不使用UISwitch

      【讨论】:

        【解决方案6】:

        我也看过 UISwitch,但就我而言,我不想要一个开/关按钮,我真的想要一个切换按钮。在我的情况下,我再次尝试做的是有一组看起来像 UISegmentedControl 的按钮,但用户可以一次“切换”控件上的多个按钮。我要解决的问题是我的屏幕空间非常有限,并且需要在屏幕上进行很多切换。

        我的后备可能是一个充满切换单元的 UITableView。这样,我可以在屏幕的固定、可滚动区域中添加任意数量的切换。

        遗憾的是,UISwitch 并不总是符合人们心目中的 UI 规范,所以我猜发布原始帖子的那位先生也不是在寻找开/关开关,而是想要一个以某种方式改变其状态的按钮.

        【讨论】:

          【解决方案7】:

          我也需要这样做。将启用状态设置为 NO 不会阻止按钮被切换回来吗?

          更新

          人们建议使用 UISwitch,但它可以使用所有相关的 up、over、disabled、selectedUp、SelectedOver、selectedDisabled 状态进行蒙皮吗?

          【讨论】:

          • 是的,所以我最终做的是使用“selected”属性,据我所知,它对 UIButton 没有任何作用。
          • UIButton 是否支持所有用于换肤的切换按钮状态。原谅我的无知,因为我是作为 Flex 开发人员看待这个问题的。在 Flex 中,ToggleButton 具有通常的 up、over、disabled 状态,但也有 selectedUp、selectedOver、selectedDisabled 等。您需要所有这些状态来创建正确的切换。是的,您还需要一个选定的属性。如果这存在于 UIButton 上,则建议您可以激活切换。是这样吗?
          • 不,我不相信它有。但是您可以做的是覆盖 setSelected: 方法并更改其中的样式。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-13
          • 2019-11-10
          • 1970-01-01
          • 2019-12-23
          • 1970-01-01
          • 2017-10-20
          相关资源
          最近更新 更多