iOS Viewcontroller自动"点击"纽扣

时间:2014-07-25 13:20:50

标签: ios objective-c uiviewcontroller


我目前正在使用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.m

#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

现在,每当我启动应用程序时,我都会导航到此viewcontroller,它将记录&#34; setEnglishClicked&#34;和&#34; setGermanClicked&#34;并始终为键englishEnabled设置BOOL false。 我已经尝试了删除按钮并将它们放回原处的所有内容,甚至从头开始整个项目,但它始终采用相同的方式。奇怪的是,这个视图中的另外两个按钮用于&#34;开始&#34;和&#34;设置&#34;没有&#34;点击&#34;。如果有人可以告诉我我做错了什么,那将会有所帮助! 最好的祝福! Ĵ

1 个答案:

答案 0 :(得分:1)

(IBAction)实际上定义为(void)中的UINibDeclarations.h

因此,方法- (IBAction)setEnglish:(UIButton *)sender- (IBAction)setGerman:(UIButton *)sender是设置器,并在视图控制器出现时调用。

重命名它们,例如重命名为- (IBAction)didPressEnglishButton:(UIButton*)sender,它应该有效。