Obj C ui分段控制以取消/激活按钮

时间:2018-02-02 17:16:47

标签: ios objective-c xcode uibutton uisegmentedcontrol

大家,

我无法在旧的Objective c应用中获得分段控件来激活或停用其他按钮。

到目前为止,我尝试了以下内容: 我已将按钮和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;

我还尝试将SegmentedControl链接到HighScoreViewController.m中的不同IBAction :(我知道它将是reduntand)

- (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 的价值转移 但我不知道如何解决这个问题。

(这样做的原因是有一个不可见的按钮,删除数据,但只有点击不可见的开关才可点击/激活。 或者,我想通过单击按钮提示密码,之后数据将被删除。 但是,我更不知道如何实现这一点。)

提前致谢

1 个答案:

答案 0 :(得分:1)

您需要按照以下方式进行设置。

  • 将按钮连接到插座clearButton
  • 将您的segmentedControl连接到outlet segmentedControl
  • 将按钮Touch Up Inside连接到clearHighScore
  • 将segmentedControl&#39; valueChanged连接到activateClearHighScoreButton

当您点击分段控件时,此按钮现在将被启用/禁用。

@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;
    }
}