UIBarButtonItem作为布尔值的切换开关

时间:2009-07-20 20:29:53

标签: iphone objective-c cocoa-touch uibutton

我目前在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变量和标题不会更改,应用程序会冻结并崩溃。我做错了什么?

2 个答案:

答案 0 :(得分:0)

您正在分配一个新的viewController,设置切换,然后释放它。从本质上讲,你什么都不做。为了完成你想要做的事情(我认为),删除发布和分配,并将viewController设置为显示切换的实际视图控制器。

答案 1 :(得分:0)

你没有在你显示的代码中设置viewController,你的rootviewController是null ...所以当然应用程序会崩溃