【发布时间】:2014-07-25 13:20:49
【问题描述】:
我目前正在使用 XCode 5.1.1 开发 iPhone 应用程序。我只是开始使用应用程序,但事情进展顺利,直到我最近碰壁,我不知道如何克服。
在显示的第一个 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
现在每次我导航到这个视图控制器时,当我启动应用程序时,它也会记录“setEnglishClicked”和“setGermanClicked”,并且总是将键 EnglishEnabled 的 BOOL 设置为 false。 我已经尝试了从删除按钮并将它们放回原处的所有方法,甚至从头开始新的整个项目,但它总是表现相同。奇怪的是,这个视图中“开始”和“设置”的另外两个按钮没有被“点击”。如果有人能告诉我我做错了什么,那将有很大帮助! 最好的祝福! J
【问题讨论】:
-
尝试重命名 IBAction 方法。 setEnglish 是一个设置器,通常每当您为该属性分配某些内容时都会调用该方法。尝试重命名方法,例如:
-(IBAction)didPressEnglishButton:(UIButton*)sender -
好吧,我刚刚检查了一下,这很有效。先生,我向您脱帽致敬,非常感谢您!!!
-
不客气。我会将其添加为答案,以便其他可能偶然发现此问题的人更容易看到。
标签: ios objective-c uiviewcontroller