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