C在两个按钮之间切换

我是Objective-C的新手,我试图创建一个应用程序,其中包含两个按钮,可以同时打开和关闭。 我在Interace Bulder中处理了按钮状态(用于打开和关闭的图像),但我很难弄清楚如何在Xcode中编写逻辑。

以下是我需要满足的条件:

- 当两个按钮均未打开时,任一按钮都可能打开。

- 当按钮1打开,按钮2被按下时,按钮1关闭,按钮2打开。

- 当按钮2打开,按钮1被点击时,按钮2关闭,按钮1打开。

- 当按钮1打开并且按钮1被点击时,没有任何反应。

- 当按钮2打开并且按钮2被点击时,没有任何反应。

我一直在使用BOOL来尝试解决逻辑问题,但这并不适合我。 有没有人有如何做到这一点的想法?

这些按钮被添加了programatiaclly,所以简单的代码在.h文件中看起来像这样:

在.h中:

#import <UIKit/UIKit.h>
@interface Profile_Settings_PageViewController : UIViewController {


IBOutlet UIButton *Button1;
IBOutlet UIButton *Button2;


BOOL ButtonSelected;
}

@property (nonatomic, retain) UIButton *Button1;
@property (nonatomic, retain) UIButton *Buton2;


-(IBAction) ButtonTouched:(id)sender;
@end

那么.m文件:

#import "Profile_Settings_PageViewController.h"

@implementation Profile_Settings_PageViewController
@synthesize Button1;
@synthesize Button2;



-(IBAction) ButtonTouched:(id)sender
{

if (ButtonSelected == 0)
{
    [Button1 setSelected: NO];
    [Button2 setSelected: NO];
    ButtonSelected = 1;
}

else if (ButtonSelected == 1)  
{
    [Button1 setSelected: YES];
    [Button2 setSelected: YES];

    ButtonSelected = 0;

}

}
- (void)viewDidLoad {

[super viewDidLoad];

ButtonSelected == 0;
}

- (void)dealloc {
  [Button1 release];
  [Button2 release];

  [super dealloc];
}

@end

我遇到的问题是if语句开始的地方。 我不知道如何指向逻辑的特定按钮。 我知道现在有什么是不正确的,因为它适用于两个按钮,并且由于逻辑错误,写入条件语句时会产生问题。 我不知道如何解决它,但...


如果您的图像状态为NORMAL和SELECTED,则创建两个带插座的按钮,分别标记它们1和2,并按照您的按钮操作方法:

从选择按钮1开始,按钮2正常。

- (IBAction)buttonAction:(UIButton*)sender 
{
    if (sender.selected)
        return;
    if (sender.tag == 1)
    {
        button1.selected = !button1.selected;
        button2.selected = !button1.selected;
    }
    else if (sender.tag == 2)
    {
        button2.selected = !button2.selected;
        button1.selected = !button2.selected;
    }   
}

int selectedIndex = -1;

if( selectedIndex != 1 && b1 clicked ) { selectedIndex = 1; do stuff }
if( selectedIndex != 2 && b2 clicked ) { selectedIndex = 2; do stuff }

即:

  • 有一个“哪个按钮被选中”的状态
  • 有一个“没有选择”的状态
  • 检查所选/未选中的每次点击,并在事情发生时更新

  • 假设你已经想出了如何在IB中连接你的按钮,以便它们在切换时调用viewController中的方法。 在视图控制器中定义两个插座(每个按钮一个插座),并在交换机的值发生变化时调用一个动作:

    @interface ToggleViewController : UIViewController {
    
      UISwitch *button1;
      UISwitch *button2;
    }
    
    @property (nonatomic, retain) IBOutlet UISwitch *button1;
    @property (nonatomic, retain) IBOutlet UISwitch *button2;
    
    - (IBAction)switchAction:(id)sender;
    
    @end
    

    确保连接插座,并将Value Changed事件连接到两个按钮的switchAction。 开关动作方法可以是沿着这些线的东西:

    - (IBAction)switchAction:(id)sender {
    
      if ([sender isOn]) {
    
        if ([sender isEqual:button1])
        {
          [button2 setOn:NO animated:YES];
        } else {
          [button1 setOn:NO animated:YES];
        }
      }
    }
    
    链接地址: http://www.djcxy.com/p/96249.html

    上一篇: C Toggle Between Two Buttons

    下一篇: 2D Array of UIButtons Isn't Working (Objective