所以我試圖嵌入一個切換(是一個單詞?)在UIAlertView中,「不要再顯示這個」按鈕,但我遇到了一些麻煩,我可以似乎沒有得到解決。如何在UIAlertView中創建一個自定義的UIButton
這是迄今爲止我不工作的代碼...
編輯:我添加的按鈕的方法,並提出在原來代碼中的一些變化。現在我得到按鈕來對新聞作出反應,但結果是崩潰。任何幫助?
if (![[NSUserDefaults standardUserDefaults] objectForKey:@"disclaimer"]){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"DISCLAIMER"
message:@"This program is a blah blah"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"I Agree", nil];
UILabel *alertLabel = [[UILabel alloc] initWithFrame:CGRectMake(30, 230, 260, 50)];
alertLabel.backgroundColor = [UIColor clearColor];
alertLabel.textColor = [UIColor whiteColor];
alertLabel.text = @"Do not show again";
[alert addSubview:alertLabel];
[alertLabel release];
//declared alertCheckboxButton in the header due to errors I was getting when referring to the button in the button's method below
alertCheckboxButton = [UIButton buttonWithType:UIButtonTypeCustom];
alertCheckboxButton.frame = CGRectMake(200, 247, 16, 16);
alertCheckboxButton.backgroundColor = [UIColor clearColor];
UIImage *alertButtonImageNormal = [UIImage imageNamed:@"checkbox.png"];
UIImage *alertButtonImagePressed = [UIImage imageNamed:@"checkbox-pressed.png"];
UIImage *alertButtonImageChecked = [UIImage imageNamed:@"checkbox-checked.png"];
[alertCheckboxButton setImage:alertButtonImageNormal forState:UIControlStateNormal];
[alertCheckboxButton setImage:alertButtonImagePressed forState:UIControlStateHighlighted];
[alertCheckboxButton setImage:alertButtonImageChecked forState:UIControlStateSelected];
[alertCheckboxButton addTarget:self action:@selector(alertCheckboxButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
//made the button a subview of alert rather than alertLabel
[alert addSubview:alertCheckboxButton];
[alert show];
//moved alertCheckboxButton release to (void)dealloc
[alert release];
}
-(void)alertCheckboxButtonClicked{
if (![[NSUserDefaults standardUserDefaults] objectForKey:@"disclaimer"]){
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"disclaimer"];
alertCheckboxButton.selected = YES;
}else {
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"disclaimer"];
alertCheckboxButton.selected = NO;
}
}
如何更改按鈕的狀態?在我的代碼中,如果我點擊它,沒有任何反應,即我沒有看到不同的PNG,我只是看到相同的控制狀態正常的圖像。我知道如何使用IB來做到這一點,但我不知道如何以編程方式更改按鈕狀態。 – Sam 2011-04-15 19:22:13