iOS Viewcontroller自动;点击;按钮
iOS Viewcontroller自动;点击;按钮,ios,objective-c,uiviewcontroller,Ios,Objective C,Uiviewcontroller,我目前正在使用XCode 5.1.1开发iPhone应用程序。我只是刚刚开始使用应用程序,但事情进展得相当顺利,直到最近我遇到了一堵无法克服的墙。 在显示的第一个Viewcontroller上,我有两个按钮可在语言之间切换。但是,每次显示此viewcontroller时,按钮似乎都会自动“单击”,即执行按钮触发的功能。我将把.h和.m文件中的代码附加到此处: ViewController.h #import <UIKit/UIKit.h> @interface ViewControl
我目前正在使用XCode 5.1.1开发iPhone应用程序。我只是刚刚开始使用应用程序,但事情进展得相当顺利,直到最近我遇到了一堵无法克服的墙。 在显示的第一个Viewcontroller上,我有两个按钮可在语言之间切换。但是,每次显示此viewcontroller时,按钮似乎都会自动“单击”,即执行按钮触发的功能。我将把.h和.m文件中的代码附加到此处:
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
NSString *settingsTitle;
NSString *gerBtn;
NSString *engBtn;
}
@property (strong, nonatomic) IBOutlet UIButton *english;
@property (strong, nonatomic) IBOutlet UIButton *german;
@property (strong, nonatomic) IBOutlet UIButton *settings;
- (IBAction)setEnglish:(UIButton *)sender;
- (IBAction)setGerman:(UIButton *)sender;
@end
现在,每次我导航到此viewcontroller时,当我启动应用程序时,它都会记录“setEnglishClicked”和“setGermanClicked”,并始终将键englishEnabled的布尔值设置为false。
从删除按钮到重新插入按钮,甚至从头开始整个项目,我都试过了,但效果总是一样的。奇怪的是,该视图中“开始”和“设置”的其他两个按钮没有被“单击”。如果有人能告诉我我做错了什么,那就大有裨益了!
顺致敬意,
J(iAction)
实际上是在UINibDeclarations.h
中定义为(void)
因此,方法-(iAction)setEnglish:(UIButton*)sender
和-(iAction)setGerman:(UIButton*)sender
都是设置器,在视图控制器出现时调用
例如,将它们重命名为
-(iAction)didPressEnglishButton:(UIButton*)sender
,它应该可以工作。尝试重命名iAction方法。setEnglish是一个setter,通常每当您为该属性赋值时都会调用该方法。尝试重命名这些方法,例如:-(iAction)didPressEnglishButton:(UIButton*)sender
我刚刚检查了一下,这就成功了。先生,我向您脱帽致敬,非常感谢您!!!不客气。我将添加它作为一个答案,这样更容易被其他可能偶然发现这个问题的人看到。
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewWillAppear:(BOOL)animated
{
if([[NSUserDefaults standardUserDefaults] boolForKey:@"englishEnabled"]){
[_settings setTitle:@"Settings" forState:UIControlStateNormal];
} else {
[_settings setTitle:@"Einstellungen" forState:UIControlStateNormal];
}
NSLog(@"%hhd", [[NSUserDefaults standardUserDefaults] boolForKey:@"englishEnabled"]);
[super viewWillAppear:animated];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)setEnglish:(UIButton *)sender {
NSLog(@"setEnglishClicked");
[self enLangChange];
}
- (IBAction)setGerman:(UIButton *)sender {
NSLog(@"setGermanClicked");
[self deLangChange];
}
- (void) enLangChange
{
[[NSUserDefaults standardUserDefaults] setBool:true forKey:@"englishEnabled"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (void) deLangChange
{
[[NSUserDefaults standardUserDefaults] setBool:false forKey:@"englishEnabled"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end