【问题标题】:Obj C ui segmented control to de/activate a buttonObj C ui 分段控制来取消/激活按钮
【发布时间】:2018-07-13 06:06:54
【问题描述】:

大家,

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

到目前为止,我已经尝试了以下方法: 我已将按钮和 SegmentedControl 链接到同一个 IBAction。 SegmentedControl -> 发送事件:-> 值已更改 -> 文件所有者:clearHighScore: 按钮 -> 发送事件:-> 内部修饰 -> 文件所有者 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:(我知道它会是多余的)

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

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

提前致谢

【问题讨论】:

  • 您的问题令人困惑。您有一个 SegmentedControl... 并且您有一个不可见的按钮...当用户更改选定的段时,您想更改按钮的可见性吗?或者您想保持按钮不可见,但在点击时允许执行操作?
  • 我想让两者都不可见(alpha 0)。如果点击了分段控件,我想允许一个动作。
  • 您想“在分段控件被点击时允许操作”?你的意思是当它被点击时你想执行一个方法?还是要启用另一个控件?
  • 我想启用另一个控件(与 clearHighScore 方法链接的按钮)。分段控件必须激活/停用此“clearHighScore”按钮

标签: ios objective-c xcode uibutton uisegmentedcontrol


【解决方案1】:

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

  • 将您的按钮连接到插座clearButton
  • 将您的分段控制连接到插座segmentedControl
  • 将按钮Touch Up Inside 连接到clearHighScore
  • 将segmentedControl的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;
    }
}

【讨论】:

  • 谢谢,这行得通。 :) 我只需要在“clearButton.enabled....”之前添加一个下划线,例如“_clearButton.enabled...”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多