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