我目前正在使用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;。如果有人可以告诉我我做错了什么,那将会有所帮助! 最好的祝福! Ĵ
答案 0 :(得分:1)
(IBAction)
实际上定义为(void)
中的UINibDeclarations.h
。
因此,方法- (IBAction)setEnglish:(UIButton *)sender
和- (IBAction)setGerman:(UIButton *)sender
是设置器,并在视图控制器出现时调用。
重命名它们,例如重命名为- (IBAction)didPressEnglishButton:(UIButton*)sender
,它应该有效。