我是Objective-C的新手,我正在尝试创建一个带有两个按钮的应用程序,这两个按钮可以串联切换。我已经在Interace Bulder中处理了按钮状态(打开和关闭的图像),但是我很难弄清楚如何在Xcode中编写逻辑。
以下是我需要满足的条件:
- 当两个按钮都没有打开时,任何一个按钮都可能打开。
- 当按钮1打开,单击按钮2时,按钮1关闭,按钮2打开。
- 当按钮2打开,单击按钮1时,按钮2关闭,按钮1打开。
- 当按钮1打开且单击按钮1时,没有任何反应。
- 当按钮2打开且单击按钮2时,没有任何反应。
我一直在使用BOOL来尝试制定逻辑,但这对我来说并没有发生。有没有人知道如何做到这一点?
按钮是以编程方式添加的,因此简单代码在.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语句的开头。我不确定如何指向逻辑的特定按钮。我知道现在有什么不正确,因为它适用于两个按钮,并且因为逻辑错误,这在编写条件语句时会产生问题。我不确定如何解决它......
答案 0 :(得分:4)
如果您的图像状态为NORMAL和SELECTED,请创建两个带插座的按钮,将它们标记为1&amp;分别为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;
}
}
答案 1 :(得分:1)
int selectedIndex = -1;
if( selectedIndex != 1 && b1 clicked ) { selectedIndex = 1; do stuff }
if( selectedIndex != 2 && b2 clicked ) { selectedIndex = 2; do stuff }
即:
答案 2 :(得分:1)
假设您已经弄清楚如何在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];
}
}
}
答案 3 :(得分:0)
这很简单:当触摸任一按钮时,你想关闭另一个按钮。因此,在button1的UIControlEventTouchUpInside处理程序中,将button2设置为off。在button2的UIControlEventTouchUpInside处理程序中,将button1设置为off。
答案 4 :(得分:0)
对于swift3,这是有效的
mystery=input=>multiplier=>(input+2)*multiplier*4;
mystery3=param=>bonus=>param(6)+bonus;
result=mystery3(mystery(3))(2);
谢谢@Rog。