【问题标题】:Perform three different action for a single button为单个按钮执行三个不同的操作
【发布时间】:2015-08-04 09:07:35
【问题描述】:

我想为一个按钮执行三个不同的操作。我在谷歌上冲浪也显示了一些不同的选项,但这些都没有帮助。

我已经在 CustomUIButton 中声明了 NSInteger,即点击并在 IBAction 中初始化为 0。 这是代码。

-(void)changeStudentAction:(id)sender
{
    CustomUIButton *button=sender;
    NSInteger flag = 0;
    button.click=0;
    if(button.click==0)
    {
        button.click=1;
        [button setSelected:NO];
        [button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];
        flag=0;
    }
    else if (button.click==1)
    {
        button.click=2;
        [button setSelected:YES];
        [button setBackgroundImage:[UIImage imageNamed:@"Present_on_coloured.png"] forState:UIControlStateNormal];
        flag=1;
    }
    else if (button.click==3)
    {
        button.click=0;
        [button setBackgroundImage:[UIImage imageNamed:@"Late_on_coloured.png"] forState:UIControlStateNormal];
        [button setSelected:YES];
        flag=3;
    }

}

但它不起作用。谁能告诉我哪里做错了。

【问题讨论】:

  • 但我想在三次按钮单击时显示这三个不同的图像。有可能吗?
  • 你想制作动画吗。
  • button.click=0;在此按钮功能之外的某个地方定义它。每次单击它分配 button.click=0;每次将其初始化为零,以在其他地方初始化它
  • 你能详细解释一下你想要达到的目标吗?

标签: ios xcode ios7


【解决方案1】:

您正在为每个操作设置 button.click = 0。 所以每次你点击它都会被设置为零。 您可以改为在视图控制器中保留一个单独的变量来计数,而不是在按钮上拥有 click 属性。希望这会有所帮助:-)

【讨论】:

  • 你能用代码写下你到底想说什么吗。
【解决方案2】:

根据您的代码, 它总是在继续

if(button.click==0)
{
button.click=1;
[button setSelected:NO];
[button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];
flag=0;
}

我会给你更好的建议,而不是“点击”,你可以使用“标签”选项,这是 uibutton 的一个属性。 首先,您必须在 .h 文件上定义一个自定义按钮,然后在 - (void)viewDidLoad 中设置 tag = 0 方法。

【讨论】:

  • 实际上我的按钮不在情节提要中,我使用 CustomUIButton 以不同的方法创建了它。那么如何在 viewDidLoad 方法中设置 tag=0 的值。
  • 每个控件都有一个标签属性。当您使用 CustomUIButton 创建按钮时,例如 CustomUIButton * custButton = [[CustomUIButton alloc]init];之后你设置了 custButton.tag = 0;
【解决方案3】:
CustomUIButton *button;
        NSInteger flag = 0;
        button.click=0;  

以这种方式使用它,或者从所有这些问题中简单地使用一些其他变量作为 因为每次这个函数每次都调用它的零,所以让它在这个函数之外并使用它

  NSInteger flag = 0;
  int counter = 0;
-(void)changeStudentAction:(id)sender
    {

    if(counter ==0)
    {
        counter =1;
        [button setSelected:NO];
        [button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];
        flag=0;
    }
    else if (counter ==1)
    {
        counter =2;
        [button setSelected:YES];
        [button setBackgroundImage:[UIImage imageNamed:@"Present_on_coloured.png"] forState:UIControlStateNormal];
        flag=1;
    }
    else if (counter ==3)
    {
        counter =0;
        [button setBackgroundImage:[UIImage imageNamed:@"Late_on_coloured.png"] forState:UIControlStateNormal];
        [button setSelected:YES];
        flag=3;
    }

}

【讨论】:

    【解决方案4】:

    在开始按钮标记为零然后更改如下

    -(void)changeStudentAction:(id)sender{
         CustomUIButton *button=sender;
         NSInteger flag = 0;
         if(button.tag==0)
         {
             button.tag=1;
         }     
         else if (button.tag==1)
         {
            button.tag=2;
         }
         else if (button.click==3)
         {
              button.tag=0;
         }
    }
    

    【讨论】:

      【解决方案5】:

      在全局范围内定义button.click=0;,使其最初的值为零,然后增加。

      @interface yourclass : superclass
      {
         int click;
      }
      
      
      - (void)viewDidLoad{
      
            click=0;
      
      }
      
      -(void)changeStudentAction:(id)sender
      {
      CustomUIButton *button=sender;
      NSInteger flag = 0;
      
      if(click==0)
      {
          click=1;
          [button setSelected:NO];
          [button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];
          flag=0;
      }
      else if (button.click==1)
      {
          click=2;
          [button setSelected:YES];
          [button setBackgroundImage:[UIImage imageNamed:@"Present_on_coloured.png"] forState:UIControlStateNormal];
          flag=1;
      }
      else if (button.click==3)
      {
          click=0;
          [button setBackgroundImage:[UIImage imageNamed:@"Late_on_coloured.png"] forState:UIControlStateNormal];
          [button setSelected:YES];
          flag=3;
      }
      
      }
      

      【讨论】:

      • 实际上我的按钮不在情节提要中,我使用 CustomUIButton 以不同的方法创建了它。那么如何在 viewDidLoad 方法中设置 button.click 的值。
      • 创建一个全局变量而不是点击按钮。我已经更新了答案,现在检查一下。
      【解决方案6】:

      请尝试以下代码可能会解决您的问题。

      -(void)changeStudentAction:(id)sender
      {
          CustomUIButton *button=sender;
              [UIView beginAnimations:nil context:nil];
              [UIView setAnimationDuration:0.2];
             [button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];
      
              [UIView setAnimationDuration:0.4];
              [button setBackgroundImage:[UIImage imageNamed:@"Present_on_coloured.png"] forState:UIControlStateNormal];
      
              [UIView setAnimationDuration:0.6];
              [button setBackgroundImage:[UIImage imageNamed:@"Late_on_coloured.png"] forState:UIControlStateNormal];
      
              [UIView commitAnimations];
      
      }
      

      【讨论】:

        猜你喜欢
        • 2012-06-07
        • 2022-12-02
        • 2021-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-07
        相关资源
        最近更新 更多