【问题标题】:Change the button image when pressed and then released in ios按下然后在ios中释放时更改按钮图像
【发布时间】:2018-01-12 16:50:44
【问题描述】:

我有一个带有图像的按钮。按下此按钮时,必须更改图像。再次按下按钮时,应将其更改回原始图像。 更改视图控制器时应保留此更改的图像。

【问题讨论】:

    标签: objective-c image button nsuserdefaults


    【解决方案1】:

    为您的UIView 添加一个按钮。

    进入 storyboardxib 或您的按钮所在的位置,然后 检查器窗口 并将您的图像设置为选中和未选中的图像.

    在控制器中创建一个 IBAction 并将按钮连接到该操作。

    -(IBAction) toggleUIButtonImage:(id)sender{
          if ([sender isSelected]) {
             [sender setImage:unselectedImage forState:UIControlStateNormal];
             [sender setSelected:NO];
    
             NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
             [defaults setValue:@"no" forKey:@"buttonSelected"];
             [defaults synchronize];
          } else {
             [sender setImage:selectedImage forState:UIControlStateSelected];
             [sender setSelected:YES];
    
             NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
             [defaults setValue:@"yes" forKey:@"buttonSelected"];
             [defaults synchronize];
          }
      } 
    

    IBAction 链接到您的按钮

    那么为了知道它是否被选中,你需要在你的viewDidLoad方法中查询NSUserDefaults

    - (void) querySelected {
        NSString *selected = [[NSUserDefaults standardUserDefaults] objectForKey:@"buttonSelected"];
    
        if ([selected isEqualToString: @"yes"]) {
            [sender setImage:selectedImage forState:UIControlStateSelected];
            [sender setSelected:YES];
        } else {
            [sender setImage:unselectedImage forState:UIControlStateNormal];
            [sender setSelected:NO];
        }
    }
    

    【讨论】:

    • 这个 querySelected 函数必须在 viewdidload 中调用?
    • 不,它可以在任何时候调用,但最好在 viewDidLoad 或 viewWillAppear 上调用。这是因为当它被调用时,它会检查它是否最后被选中并设置正确的图像。 :)
    • 好的去试试看
    • 让我知道您的进展情况以及您是否需要帮助。
    • 你运气好吗?
    猜你喜欢
    • 2013-06-25
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多