0

現在、AppDelegate で次のコードを使用して、UIBarButtonItem をスイッチとして機能させ、RootViewController クラスの BOOL 変数を調整しています。

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
...
toggleSwitch = [[UIBarButtonItem alloc] initWithTitle:@"English" style:UIBarButtonItemStylePlain target:self action:@selector(togglePress:)]; 
...
}

そして、セレクターは AppDelegate の後半にあります。

-(IBAction) togglePress:(id)sender {
RootViewController *viewController;

if (viewController.searchEnglish) {
    viewController.searchEnglish = NO;
    toggleSwitch.title = @"English";

}
else {
    viewController.searchEnglish = YES;
    toggleSwitch.title = @"OtherLanguage";
}

}

基本的に、RootViewController クラスの BOOL が YES に設定されているかどうかを確認し、NO に設定されている場合はボタンのタイトルを「OtherLanguage」に変更し、それ以外の場合はその逆を行います。しかし、プログラムを実行してボタンをクリックすると、BOOL 変数とタイトルが変更されず、アプリケーションがフリーズしてクラッシュします。私は何を間違っていますか?

4

2 に答える 2

0

表示したコードでviewControllerを何にも設定していません.rootviewControllerはnullです...もちろん、アプリはクラッシュします

于 2009-07-20T20:51:25.460 に答える
0

新しいviewControllerを割り当て、トグルを設定してから解放しています。基本的に、あなたは何もしていません。あなたがやろうとしていること(私が思うに)を達成するには、リリースと割り当てを削除し、viewControllerをトグルを表示する実際のView Controllerに設定します。

于 2009-07-20T20:35:01.500 に答える