Obj C ui 分段控件到 de/activate 一个按钮

Obj C ui segmented control to de/activate a button

各位,

我无法在较旧的 Objective c 应用程序中使用分段控件来激活或停用另一个按钮。

到目前为止我已经尝试了以下方法: 我已 link 将按钮和 SegmentedControl 编辑到同一个 IBAction。 SegmentedControl -> 已发送事件: -> 值已更改 -> 文件所有者:clearHighScore: 按钮 -> 发送事件: -> Touch Up Inside -> 文件所有者 clearHighScore:

HighScoreViewController.m :

#import "HighScoreViewController.h"
@synthesize segmentedControl;    

- (IBAction)clearHighScore:(id)sender {

        if (self.segmentedControl.selectedSegmentIndex == 0) {}
        else if (self.segmentedControl.selectedSegmentIndex == 1) {
                deletes.A.table;
        }
    }

HighScoreViewController.m :

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>

- (IBAction)clearHighScore:(id)sender;

@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControl;

我还尝试 link 将 SegmentedControl 更改为 HighScoreViewController.m 中的另一个 IBAction:(我知道它会被冗余)

- (IBAction)activateClearHighScoreButton:(id)sender {
    switch (self.segmentedControl.selectedSegmentIndex) {
        case 0:
            self.segmentedControl.selectedSegmentIndex = 0;
            break;
        case 1:
            self.segmentedControl.selectedSegmentIndex = 1;
            break;
        default:self.segmentedControl.selectedSegmentIndex = 0;
            break;
    }
}

- (IBAction)clearHighScore:(id)sender {

    if (self.segmentedControl.selectedSegmentIndex == 0) {}
    else if (self.segmentedControl.selectedSegmentIndex == 1) {
            deletes.A.table;
    }
}

我想我错过了价值转移到 (IBAction)clearHighScore 但我不知道如何解决这个问题。

(这样做的原因是有一个删除数据的不可见按钮,但只有 clickable/active 如果单击不可见开关。 或者,我希望通过单击按钮提示输入密码,之后数据将被删除。 但是,我更不知道如何实现它。)

提前致谢

您需要进行如下设置

  • 将您的按钮连接到插座 clearButton
  • 将您的 segmentedControl 连接到插座 segmentedControl
  • 将按钮 Touch Up Inside 连接到 clearHighScore
  • 将 segmentedControl 的 valueChanged 连接到 activateClearHighScoreButton

当您点击分段控件时,按钮现在将 enabled/disabled。

@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControl;
@property (weak, nonatomic) IBOutlet UIButton *clearButton;

- (IBAction)clearHighScore:(id)sender {
    if (self.segmentedControl.selectedSegmentIndex == 0) {}
    else if (self.segmentedControl.selectedSegmentIndex == 1) {
            deletes.A.table;
    }
}

- (IBAction)activateClearHighScoreButton:(id)sender {
    switch (self.segmentedControl.selectedSegmentIndex) {
        case 0:
            _clearButton.enabled = NO;
            break;
        case 1:
            _clearButton.enabled = YES;
            break;
        default:
            break;
    }
}